<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>135964</bug_id>
          
          <creation_ts>2014-08-14 16:29:21 -0700</creation_ts>
          <short_desc>Snap offsets should update when style is programmatically changed</short_desc>
          <delta_ts>2015-09-29 15:56:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=142590</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134283</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029261</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2014-08-14 16:29:21 -0700</bug_when>
    <thetext>When style is changed programmatically (i.e. through JavaScript) snap offsets should be properly updated. Currently, this only happens upon layout (see RenderLayer::updateSnapOffsets) and would therefore not respond correctly to changes in style that do not require layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029509</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2014-08-15 16:21:10 -0700</bug_when>
    <thetext>We&apos;ll want to take a look at RenderStyle::diff to address this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032009</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-28 09:33:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/18162411&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106971</commentid>
    <comment_count>3</comment_count>
      <attachid>256183</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-05 11:52:58 -0700</bug_when>
    <thetext>Created attachment 256183
Test pages for programmatic style updates in mainframe and overflow scroll snapping

Press the buttons on the top left to toggle element styles for scroll snapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107085</commentid>
    <comment_count>4</comment_count>
      <attachid>256213</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-06 06:55:51 -0700</bug_when>
    <thetext>Created attachment 256213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107086</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-06 07:01:03 -0700</bug_when>
    <thetext>WIP patch -- still some other cases to test, such as removing repeat() on a scroll snap container when there are children with scroll snap coordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107385</commentid>
    <comment_count>6</comment_count>
      <attachid>256276</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-06 23:11:47 -0700</bug_when>
    <thetext>Created attachment 256276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107502</commentid>
    <comment_count>7</comment_count>
      <attachid>256276</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-07 11:33:14 -0700</bug_when>
    <thetext>Comment on attachment 256276
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256276&amp;action=review

I have a few cleanup suggestions, but otherwise this looks good. r- to correct some minor readability issues.

&gt; Source/WebCore/rendering/RenderElement.cpp:1500
&gt; +    bool foundScrollSnapLayer = false;

I don&apos;t think you need this variable.

&gt; Source/WebCore/rendering/RenderElement.cpp:1504
&gt; +            foundScrollSnapLayer = true;

I think you could just return currentLayer in this case.

&gt; Source/WebCore/rendering/RenderElement.cpp:1513
&gt; +    return foundScrollSnapLayer ? currentLayer : nullptr;

This could just be return nullptr.

&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:177
&gt; +        || oldStyle-&gt;scrollSnapDestination().height() != newStyle.scrollSnapDestination().height())) {

This should be encapsulated in a method &quot;static bool scrollSnapStyleIsEqual(oldStyle, newStyle)&quot;, or maybe add it to RenderStyle. Then this would just be &quot;if (!scrollSnapStyleIsEqual(oldStyle, newStyle)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107677</commentid>
    <comment_count>8</comment_count>
      <attachid>256276</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-07 22:43:59 -0700</bug_when>
    <thetext>Comment on attachment 256276
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256276&amp;action=review

Thanks for taking a look at my patch! I chatted with Simon today and learned that I should be traversing up the tree through RenderBlocks via containingBlock rather than through enclosing RenderLayers, so I refactored RenderElement::findEnclosingScrollSnapLayer to do so. I&apos;ve made the changes you pointed out in the new implementation. I&apos;ll have a new patch up soon.

&gt;&gt; Source/WebCore/rendering/RenderElement.cpp:1500
&gt;&gt; +    bool foundScrollSnapLayer = false;
&gt; 
&gt; I don&apos;t think you need this variable.

Fixed! See overall comment.

&gt;&gt; Source/WebCore/rendering/RenderElement.cpp:1504
&gt;&gt; +            foundScrollSnapLayer = true;
&gt; 
&gt; I think you could just return currentLayer in this case.

Fixed!

&gt;&gt; Source/WebCore/rendering/RenderElement.cpp:1513
&gt;&gt; +    return foundScrollSnapLayer ? currentLayer : nullptr;
&gt; 
&gt; This could just be return nullptr.

Fixed!

&gt;&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:177
&gt;&gt; +        || oldStyle-&gt;scrollSnapDestination().height() != newStyle.scrollSnapDestination().height())) {
&gt; 
&gt; This should be encapsulated in a method &quot;static bool scrollSnapStyleIsEqual(oldStyle, newStyle)&quot;, or maybe add it to RenderStyle. Then this would just be &quot;if (!scrollSnapStyleIsEqual(oldStyle, newStyle)&quot;

Fixed! Abstracted logic out to scrollSnapContainerRequiresUpdateForStyleUpdate(oldStyle, newStyle).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107683</commentid>
    <comment_count>9</comment_count>
      <attachid>256357</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-07 22:57:34 -0700</bug_when>
    <thetext>Created attachment 256357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107684</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-07 22:59:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 256276 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256276&amp;action=review
&gt; 
&gt; Thanks for taking a look at my patch! I chatted with Simon today and learned
&gt; that I should be traversing up the tree through RenderBlocks via
&gt; containingBlock rather than through enclosing RenderLayers, so I refactored
&gt; RenderElement::findEnclosingScrollSnapLayer to do so.

This needs to be covered by a layout test, like I mentioned:

&lt;div style=&quot;position: absolute&quot;&gt;
  &lt;div style=&quot;overflow, snapping...&quot;&gt;
    &lt;div style=&quot;scroll-snap-coordinate:...; position: absolute&quot;&gt;
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107789</commentid>
    <comment_count>11</comment_count>
      <attachid>256383</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-08 10:29:49 -0700</bug_when>
    <thetext>Created attachment 256383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107790</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-08 10:31:30 -0700</bug_when>
    <thetext>&gt; This needs to be covered by a layout test, like I mentioned:
&gt; 
&gt; &lt;div style=&quot;position: absolute&quot;&gt;
&gt;   &lt;div style=&quot;overflow, snapping...&quot;&gt;
&gt;     &lt;div style=&quot;scroll-snap-coordinate:...; position: absolute&quot;&gt;
&gt; ...

Thanks for the reminder. Changed the second container in the test case to test this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107807</commentid>
    <comment_count>13</comment_count>
      <attachid>256383</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-08 11:03:30 -0700</bug_when>
    <thetext>Comment on attachment 256383
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256383&amp;action=review

&gt; Source/WebCore/rendering/RenderElement.cpp:1509
&gt; +RenderLayer* RenderElement::findEnclosingScrollSnapLayer() const
&gt; +{
&gt; +    RenderBlock* currentBlock = containingBlock();
&gt; +    while (currentBlock) {
&gt; +        if (currentBlock-&gt;style().scrollSnapType() != ScrollSnapType::None)
&gt; +            return currentBlock-&gt;layer();
&gt; +        
&gt; +        if (currentBlock == currentBlock-&gt;containingBlock())
&gt; +            break;
&gt; +
&gt; +        currentBlock = currentBlock-&gt;containingBlock();
&gt; +    }
&gt; +    return nullptr;

I don&apos;t think this should be returning RenderLayers; it should be returning RenderElements (or RenderBlocks).

&gt; LayoutTests/css3/scroll-snap/scroll-snap-style-changes.html:118
&gt; +    &lt;body onload=&quot;setup();&quot;&gt;
&gt; +        &lt;div id=&quot;repeat-gallery&quot; class=&quot;gallery&quot;&gt;
&gt; +            &lt;div class=&quot;horizontal hchild00&quot;&gt;&lt;/div&gt;&lt;div class=&quot;horizontal hchild01&quot;&gt;&lt;/div&gt;&lt;div class=&quot;horizontal hchild02&quot;&gt;&lt;/div&gt;&lt;div class=&quot;horizontal hchild03&quot;&gt;&lt;/div&gt;&lt;div class=&quot;horizontal hchild04&quot;&gt;&lt;/div&gt;&lt;div class=&quot;horizontal hchild05&quot;&gt;&lt;/div&gt;
&gt; +        &lt;/div&gt;
&gt; +        &lt;div id=&quot;coordinates-gallery&quot; class=&quot;gallery&quot;&gt;
&gt; +            &lt;div class=&quot;snap-coord horizontal hchild00&quot; id=&quot;child00&quot;&gt;&lt;/div&gt;&lt;div class=&quot;snap-coord horizontal hchild01&quot; id=&quot;child01&quot;&gt;&lt;/div&gt;&lt;div class=&quot;snap-coord horizontal hchild02&quot; id=&quot;child02&quot;&gt;&lt;/div&gt;&lt;div class=&quot;snap-coord horizontal hchild03&quot; id=&quot;child03&quot;&gt;&lt;/div&gt;&lt;div class=&quot;snap-coord horizontal hchild04&quot; id=&quot;child04&quot;&gt;&lt;/div&gt;&lt;div class=&quot;snap-coord horizontal hchild05&quot; id=&quot;child05&quot;&gt;&lt;/div&gt;
&gt; +        &lt;/div&gt;
&gt; +        &lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;/body&gt;

There&apos;s too much &quot;gallery&quot; in this test. Please put each &lt;div&gt; on its own line. I think this should be two separate tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108203</commentid>
    <comment_count>14</comment_count>
      <attachid>256383</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-09 08:49:32 -0700</bug_when>
    <thetext>Comment on attachment 256383
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256383&amp;action=review

&gt;&gt; Source/WebCore/rendering/RenderElement.cpp:1509
&gt;&gt; +    return nullptr;
&gt; 
&gt; I don&apos;t think this should be returning RenderLayers; it should be returning RenderElements (or RenderBlocks).

Got it. Refactored to return a RenderBlock*

&gt;&gt; LayoutTests/css3/scroll-snap/scroll-snap-style-changes.html:118
&gt;&gt; +    &lt;/body&gt;
&gt; 
&gt; There&apos;s too much &quot;gallery&quot; in this test. Please put each &lt;div&gt; on its own line. I think this should be two separate tests.

Got it. Split the test into two separate cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108205</commentid>
    <comment_count>15</comment_count>
      <attachid>256482</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-07-09 09:08:19 -0700</bug_when>
    <thetext>Created attachment 256482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108312</commentid>
    <comment_count>16</comment_count>
      <attachid>256482</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-09 13:19:26 -0700</bug_when>
    <thetext>Comment on attachment 256482
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256482&amp;action=review

&gt; Source/WebCore/rendering/RenderElement.cpp:1495
&gt; +// May return null if there is no such layer (e.g. setting a node to have scroll snap coordinates

Comment refers to layers.

&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:132
&gt; +    return oldStyle.scrollSnapType() != newStyle.scrollSnapType() || oldStyle.scrollSnapPointsX() != newStyle.scrollSnapPointsX()
&gt; +        || oldStyle.scrollSnapPointsY() != newStyle.scrollSnapPointsY() || oldStyle.scrollSnapDestination().width() != newStyle.scrollSnapDestination().width()
&gt; +        || oldStyle.scrollSnapDestination().height() != newStyle.scrollSnapDestination().height();

Please put one condition per line.

&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:199
&gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;scrollSnapCoordinates() != newStyle.scrollSnapCoordinates()) {
&gt; +        RenderBlock* scrollSnapBlock = enclosingBox().findEnclosingScrollSnapBlock();
&gt; +        if (scrollSnapBlock &amp;&amp; scrollSnapBlock-&gt;layer()) {
&gt; +            scrollSnapBlock-&gt;layer()-&gt;updateSnapOffsets();
&gt; +            scrollSnapBlock-&gt;layer()-&gt;updateScrollSnapState();
&gt; +        }

I don&apos;t think this is enough. Style changes could cause a scroll-snap-coordinate node to get re-hsoted by a different scroller, and this code doesn&apos;t unregister it from the old one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128538</commentid>
    <comment_count>17</comment_count>
    <who name="Michał Gołębiowski-Owczarek">m.goleb+bugzilla</who>
    <bug_when>2015-09-24 11:21:29 -0700</bug_when>
    <thetext>The first comment suggests snap offsets are not updated when changed via JS and no layout occurs. However, I don&apos;t see the change working even if I trigger the layout afterwards; see e.g.: http://output.jsbin.com/micumar/11. This test case contains a couple of elements with height 100vh and a scroll event handler that disables CSS scroll snap after you scroll down more than 5000 pixels. Firefox reacts to the change while Safari/Edge still snap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128908</commentid>
    <comment_count>18</comment_count>
      <attachid>261979</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-26 14:26:33 -0700</bug_when>
    <thetext>Created attachment 261979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128918</commentid>
    <comment_count>19</comment_count>
      <attachid>261979</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-26 19:01:57 -0700</bug_when>
    <thetext>Comment on attachment 261979
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=261979&amp;action=review

&gt; Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:72
&gt; +            snapOffsetsAsFloat.append(roundToDevicePixel(offset, deviceScaleFactor, false));

Should be uncheckedAppend since we already did reserveInitialCapacity.

&gt; Source/WebCore/rendering/RenderElement.h:256
&gt; -
&gt; +    

Please don’t land this change.

&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:134
&gt; +        || oldStyle.scrollSnapDestination().width() != newStyle.scrollSnapDestination().width()
&gt; +        || oldStyle.scrollSnapDestination().height() != newStyle.scrollSnapDestination().height();

A size can be compared directly with !=; we don’t have to check width and height separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128926</commentid>
    <comment_count>20</comment_count>
      <attachid>261979</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-26 20:55:59 -0700</bug_when>
    <thetext>Comment on attachment 261979
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=261979&amp;action=review

&gt;&gt; Source/WebCore/rendering/RenderElement.h:256
&gt;&gt; +    
&gt; 
&gt; Please don’t land this change.

Sorry -- fixed.

&gt;&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:134
&gt;&gt; +        || oldStyle.scrollSnapDestination().height() != newStyle.scrollSnapDestination().height();
&gt; 
&gt; A size can be compared directly with !=; we don’t have to check width and height separately.

Got it. I&apos;ll compare the sizes directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128935</commentid>
    <comment_count>21</comment_count>
      <attachid>261988</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-27 09:19:01 -0700</bug_when>
    <thetext>Created attachment 261988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129101</commentid>
    <comment_count>22</comment_count>
      <attachid>261988</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-28 15:53:18 -0700</bug_when>
    <thetext>Comment on attachment 261988
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=261988&amp;action=review

&gt; Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:621
&gt; +    if (ScrollingStateFrameScrollingNode* node = downcast&lt;ScrollingStateFrameScrollingNode&gt;(m_scrollingStateTree-&gt;stateNodeForID(frameView.scrollLayerID()))) {

I would use auto here instead of repeating the type name twice.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:4271
&gt; +    if (ScrollingCoordinator* scrollingCoordinator = this-&gt;scrollingCoordinator())
&gt; +        scrollingCoordinator-&gt;updateScrollSnapPropertiesWithFrameView(frameView);

I would write:

    if (auto* coordinator = scrollingCoordinator())
        coordinator-&gt;updateScrollSnapPropertiesWithFrameView(frameView);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129273</commentid>
    <comment_count>23</comment_count>
      <attachid>261988</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-29 10:16:14 -0700</bug_when>
    <thetext>Comment on attachment 261988
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=261988&amp;action=review

Thanks for reviewing my patch! I&apos;ll land it soon.

&gt;&gt; Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:621
&gt;&gt; +    if (ScrollingStateFrameScrollingNode* node = downcast&lt;ScrollingStateFrameScrollingNode&gt;(m_scrollingStateTree-&gt;stateNodeForID(frameView.scrollLayerID()))) {
&gt; 
&gt; I would use auto here instead of repeating the type name twice.

I&apos;ll change this.

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:4271
&gt;&gt; +        scrollingCoordinator-&gt;updateScrollSnapPropertiesWithFrameView(frameView);
&gt; 
&gt; I would write:
&gt; 
&gt;     if (auto* coordinator = scrollingCoordinator())
&gt;         coordinator-&gt;updateScrollSnapPropertiesWithFrameView(frameView);

Got it. I&apos;ll change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129433</commentid>
    <comment_count>24</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-09-29 15:56:44 -0700</bug_when>
    <thetext>Committed r190330: &lt;http://trac.webkit.org/changeset/190330&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>256183</attachid>
            <date>2015-07-05 11:52:58 -0700</date>
            <delta_ts>2015-07-05 11:52:58 -0700</delta_ts>
            <desc>Test pages for programmatic style updates in mainframe and overflow scroll snapping</desc>
            <filename>scroll-snap-updating-examples.zip</filename>
            <type>application/zip</type>
            <size>2559</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">UEsDBBQACAAIADlb5UYAAAAAAAAAAAAAAAAbABAAc25hcC1jaGFuZ2VkLW1haW5mcmFtZS5odG1s
VVgMAIZ7mVWtdplV9QEUAM1YTW/jNhC951ewWgSwEciWs3GwtZUU2KQLFCgWC+xeiqIHWqQlIjQp
SFRiN8h/71CUbEmk/JU9VCdbfPNmOPM4pBgmasXvLy7ChGJyf4HgCfMoY6kyf/SzLESkmBRICi4x
GQzR63ZMP884Q1GRZVSo71EmOf8ucPpNMqHyv9Ad8jKaUqwGt0GQrofe/LDtj01KteEKC4KVzDbH
GD3SXDGBy0DBNrhEweUxdg9SZkQbli7BwjJRMo45NRMCDJFRsQKKUUzV75zqn583f5CBZ3B+WgK9
oe3bAKrZHaJRAOsnac/2EBfZofspd4k4ZpbRDq0pLU5qbHqo8s+bB47z/Cte0YH3TDPFIswtombm
R1JEnEVPQFgL0lKiftgSDfrVaMlxaBHo5wg5T65detYP5Tk9l3W7SCyCbRYXkmxGudpwOnqhiyfm
5OtzZUdbpLDG6I8y03/iBQQ/6EjkzVUUreJ3lcQsg9YqP7IWdXsQUtB3pd/VZ87Ke0XkdPDTMt5Y
8u9KfKt1bDvlkbnvdNkpGE+tPntaFXoa91mFaHPtc/XTytJom+8qS3Mf0huRy9CZv/YG1l8Rp3Gj
AzlM3soynhfIGRHsOyiY/HffLGWGBnq7YYLQNXAE8+pnuN2BRpyKWCXVwNWVW+k1+u8S9U+PvlpT
3JOA/3P/tg0O6bW1DSu6Vg9SKIhO18ycdvzNDHnoas/O+4uWBPqtv/6zqqEP7Sk2dpyOd31IMp6P
7L12K+0wNo5KPcR7m4jdEzr8jXNTX8oaIuvNWgPTk7i3A0VvqsRgw3F98q++A7RGd58BWrcdcSiZ
zhAs1rZnTpfK8fqFEZXM0CQILtsDCWVxolwjEk6GSy5f/PUMJYwQKnrGQX64ULITBxPUr8mD9tgK
ZzET1mvfrEg/LxPt55Bp32hse0Y4bLBbEq2G5jbcTsEwMBHPIK1FlDSrs/05qo/KnUIczG0ZQntI
C9PHnMWQhgjERTOnyw+gVOWvaJ7juLsVpJiACGO/1MGk7aJFYb4ZFoVSUuRdEpkzs9yWbE1JO0hI
DYbwtaQ6A7Ck/Jz9S7Vja2o6nk9uXX7qCXJkgoQVWf96dSjGt6kdHM7i/DrtBlQX58aawAJWN838
DBNWQJ+4tkwNAOaertGCYzhz5JKzTvIW8D7OZCEIfK5xCfCXhKlOVyQsTzkGsS64jJ76JXBK1TIz
LzvsMnvt100/UcI4CQL06gj9w+NjAM+80dgq/MSN//LlFh4H/tqNDwLtwYH/6Mbf3moPDvxNH7/2
4MBP+/i1h/muOZt2HI7NVc1FWDZkcydz59V3M3OvusUh7BkxGKhy6qFIf3Df7T6278MxYJzoyUno
65PQH09C35yEnh6Jbvcjb7fHheZVzWJwXtOmut0BWgM9xba80jnLsnmBcxZB87qmQ9BMUGpswJt3
X+5lUYJFTIm/wkwsM7yiI31hGI5TLUQtQC3EcXmJ+B9QSwcI2n+OFUsEAABLFAAAUEsDBBQACAAI
AC9c5UYAAAAAAAAAAAAAAAAaABAAc25hcC1jaGFuZ2VkLW92ZXJmbG93Lmh0bWxVWAwAq3iZVXp4
mVX1ARQAzVhNb9s4EL3nVwgqAjgIZMtpHLS2k0OTFligWCzQXhaLPdAiLRGhSUGiEnuL/vcdipIs
SqRtOT2UJ0mc92Y4X6S4TOSGPVxcLBOC8MOFB2OZRxlNpX5RY13wSFLBPcGZQHh05f1o5tR4QZkX
FVlGuPwWZYKxbxylfwnKZf63d+/5GUkJkqO7MEy3V/7iOPb7LiUKuEEcIymy3SmgJ5JLylFpKGDD
Sy+8PAX3KESGFbBUyQUngOrBpIhjRvSiQA6LqNgAzTgm8jMj6vHT7g888rVckJaC/lVfvxaoVniM
RoKYm8Rc8TEuvJd2U+6dccoqo720ouxxxogxku0OMVUiNouIlnMYkn/aPTKU53+iDRn5LySTNEKs
Z0Y7bmPBI0ajZyCsU7qXy2rQtTdy53Mvoa96BGqcUBDTG1tFqEFYTs5lbcqsR1D5epzLHSPjV7J6
plYml5K+nUUK9Um+lz7+ilZg9qgTyJ+2cKjsf1MwdPkYHeLEKNStparz8x1v61EDPV5RWKl/ma9b
TeJNLjeaTdNfT/R6pzfPADzrdedh/ne0+4EhMFkOKfllAWm12DcFpL1v1QltA1u9Z2567nhYwa2e
4yijn2UgzzPGQXnMkkOHDB2L7pe1yLyR2mgox2QLHOGielw2e8+YER7LpJq4vrbney39Tyn1ryPX
jGUecMLv2bn7gGNZa2y9kmzlo+ASrFPR0uejYDf3fO96gNmt/aPDqI5KDjZ7P+23xw5j68DkID7Y
HvrV3uFvnZ4c/O2cMENzeii17HJSH+qrI75KpP0JfyXwrhNBAUeqNROvcy+hGBPeZmwe39UnPBOb
ipxqt6FVLljRtV+KdO5BnZpfGVlLy+dXimUy96ZheGlOJITGibTN1LYH2771xjzkHyqkMGcDXV9B
XsYhyCEQgc6uZq8/DtgnuNGY7MDGHs1AeTwHHxVRYnX6uD7sdrx+1FGlCZ1IQEoGiNEYYhVB7pHM
HmfIURlsSJ6juNvWU4QhR+OgDOrUVGFQ6H+GVSGl4LkzY9Z0S7BpJLgGgfkqPzoTUExBTv8jSrFD
71jrhfKqn0zNG5TFlGvrPxzhsPr746zr1Nrftz13r6CeSRZkCNMCiv6mB9UCsJx0660YgqMB1A/t
+GMF3+NMFBzDHxgTIP6a0G6NYZqnDEH+rZiInt1RHRKITK+rb3bpPfNzW0+UUIbD0PthMf3d01MI
Y9FqapX81C7/5csdDIv8jV0+DJUGi/x7u/zdndJgkb918SsNFvmZi19pWOwbs27Fy4m+gblYls1Y
X7Xc+/WVy8KvLmcwffEoTNQ/zvsm3kxV7va9SP0g3+9/jh+WE5BxIqaDETeDEe8HI24HI2aHEe3H
Gmg2p7ZT9aeaUMv5bUx11QMatOgQbHm/cxayfZtzFkH77qZD0HZQqjGgzX8oN7YoQTwmuNmzxuoC
cTlJVQarzFUZPCkvFf8HUEsHCJq2/6dEBAAAWxQAAFBLAQIVAxQACAAIADlb5Ubaf44VSwQAAEsU
AAAbAAwAAAAAAAAAAECkgQAAAABzbmFwLWNoYW5nZWQtbWFpbmZyYW1lLmh0bWxVWAgAhnuZVa12
mVVQSwECFQMUAAgACAAvXOVGmrb/p0QEAABbFAAAGgAMAAAAAAAAAABApIGkBAAAc25hcC1jaGFu
Z2VkLW92ZXJmbG93Lmh0bWxVWAgAq3iZVXp4mVVQSwUGAAAAAAIAAgCpAAAAQAkAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256213</attachid>
            <date>2015-07-06 06:55:51 -0700</date>
            <delta_ts>2015-07-06 23:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150706065454.patch</filename>
            <type>text/plain</type>
            <size>19281</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc4NTNiZWVkZjgxNjNm
OGFhYjE0OGQ1Y2NkODgxNzNmZjk4NmRhZC4uNDJlZjIzYzdmNWY3NmFhMjgwNTQ5YTZlNmYxNWQ5
MmEwYmUxMzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA3LTA2ICBXZW5z
b24gSHNpZWggIDx3aHNpZWhAYmVya2VsZXkuZWR1PgorCisgICAgICAgIFNuYXAgb2Zmc2V0cyBz
aG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbAorCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6c2Nyb2xsU25hcFBhcmVudExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2V0U2Nyb2xsU25hcFBhcmVudExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y2xlYXJTY3JvbGxTbmFwUGFyZW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxl
V2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kRW5jbG9z
aW5nU2Nyb2xsU25hcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Ondp
bGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZSk6CisK
IDIwMTUtMDctMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEZpeCBidWlsZCBlcnJvcnMgd2l0aCBPcGVuR0wgRVMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAKaW5kZXggMjljNjZmMTkxMDM4NzczMTI4YWNlYzBlOTU4YmY5N2FjZjgyOTQzZC4uMWU4
ZjVlMjQ3ODNiZjA5MzNiMDcxMDhiOWIyOGRlY2JjNzBiNGY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTYyLDE0ICs2MiwxNSBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRpZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVT
dGF0ZUNvbW1pdCgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNl
dHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4q
IHNuYXBPZmZzZXRzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTog
SW5jb3Jwb3JhdGUgY3VycmVudCBwYWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZp
Y2UgcGl4ZWwuIFBlcmhhcHMgd2Ugc2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFu
ZCBsZXQgVUkgcHJvY2VzcyBkbyB0aGUgcGl4ZWwgc25hcHBpbmc/CiAgICAgVmVjdG9yPGZsb2F0
PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7Ci0gICAgc25hcE9mZnNldHNBc0Zsb2F0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc25hcE9mZnNldHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIG9mZnNldCA6
IHNuYXBPZmZzZXRzKQotICAgICAgICBzbmFwT2Zmc2V0c0FzRmxvYXQuYXBwZW5kKHJvdW5kVG9E
ZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOwotCisgICAgaWYg
KHNuYXBPZmZzZXRzKSB7CisgICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNuYXBPZmZzZXRzLT5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9mZnNl
dCA6ICpzbmFwT2Zmc2V0cykKKyAgICAgICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5hcHBlbmQo
cm91bmRUb0RldmljZVBpeGVsKG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7Cisg
ICAgfQogICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkKICAgICAg
ICAgbm9kZS5zZXRIb3Jpem9udGFsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKICAg
ICBlbHNlCkBAIC0xNDEsMTEgKzE0Miw4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmIGZyYW1lVmlldykKIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRzKCk7
Ci0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRz
ID0gZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpKQotICAgICAgICBzZXRTdGF0ZVNj
cm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCwgKmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKLQotICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9m
ZnNldHMgPSBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0cygpKQotICAgICAgICBzZXRTdGF0
ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6
VmVydGljYWwsICp2ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgc2V0U3RhdGVTY3JvbGxp
bmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
LCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkpOwogCiAgICAgbm9kZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChm
cmFtZVZpZXcuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICBub2RlLT5z
ZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChmcmFtZVZpZXcuY3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgoKSk7CkBAIC00ODUsOCArNDgzLDggQEAgdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlE
IG5vZGUKICAgICAgICAgbm9kZS0+c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKHNjcm9sbGluZ0dl
b21ldHJ5LT5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAgICAgIG5vZGUtPnNldFNjcm9sbGFi
bGVBcmVhU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+c2Nyb2xsYWJsZUFyZWFTaXplKTsKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xs
aW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0
KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdHZW9tZXRyeS0+dmVy
dGljYWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAg
c2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwsICZzY3JvbGxpbmdHZW9tZXRyeS0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9s
bGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsICZzY3JvbGxpbmdHZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleChzY3JvbGxpbmdHZW9tZXRyeS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHNj
cm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNjE3MWRiNWUwYThhOTIy
NTdjYmUyZDMwN2Q2Zjc2ZGEzNjlhZGIyNC4uZjEzMDkxNjczMjZmMjM4ZGExN2UxOTMyZmZkMjY1
NjcyOGY1ZWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94
TW9kZWxPYmplY3QgewogICAgIExheW91dFJlY3QgZnJhbWVSZWN0OwogICAgIExheW91dEJveEV4
dGVudCBtYXJnaW5Cb3g7CiAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRMb2dpY2FsV2lkdGhzWzJd
OwotICAgIHZvaWQqIHBvaW50ZXJzWzJdOworICAgIHZvaWQqIHBvaW50ZXJzWzNdOwogfTsKIAog
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlckJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5k
ZXJCb3gpLCBSZW5kZXJCb3hfc2hvdWxkX3N0YXlfc21hbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCmluZGV4IDVkNDdlNDcxNGNhMWEwOTA0YzYwOTQ4Yzg0NDUyODQxMzk4Y2I5
ZDYuLjk3NWI2NzZiMzIxZWViNGYxMmEwOTJkOTg0MDBiODk2NzNjZDI0NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYyNyw2ICs2MjcsMTIgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgUmVuZGVyQm94KiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigpIGNv
bnN0OwogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyAgICBSZW5kZXJMYXllciogc2Ny
b2xsU25hcFBhcmVudExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxTbmFwUGFyZW50TGF5
ZXI7IH0KKyAgICB2b2lkIHNldFNjcm9sbFNuYXBQYXJlbnRMYXllcihSZW5kZXJMYXllciYgbGF5
ZXIpIHsgbV9zY3JvbGxTbmFwUGFyZW50TGF5ZXIgPSAmbGF5ZXI7IH0KKyAgICB2b2lkIGNsZWFy
U2Nyb2xsU25hcFBhcmVudExheWVyKCkgeyBtX3Njcm9sbFNuYXBQYXJlbnRMYXllciA9IG51bGxw
dHI7IH0KKyNlbmRpZgorICAgIAogcHJvdGVjdGVkOgogICAgIFJlbmRlckJveChFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKICAgICBSZW5kZXJC
b3goRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
OwpAQCAtNzQ0LDYgKzc1MCwxMCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIC8vIFVzZWQg
dG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdl
CiAgICAgc3RhdGljIGJvb2wgc19oYWRPdmVyZmxvd0NsaXA7CisgICAgCisjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKKyAgICBSZW5kZXJMYXllciogbV9zY3JvbGxTbmFwUGFyZW50TGF5ZXI7
CisjZW5kaWYKIH07CiAKIGlubGluZSBSZW5kZXJCb3gqIFJlbmRlckJveDo6cHJldmlvdXNTaWJs
aW5nQm94KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAppbmRleCBkNTk3Nzg3NTFjMzdiNjQ3NDQ1MWJiM2ZiNjU1MTkyNzQ4NDFmY2U3Li4yMDFlZjVh
N2ZiYmIxMjU0YjExMTBiNzc5N2E5NDJiNjgxMTQ5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC05MDcsMTYgKzkwNyw0NSBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUmIG5ldwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYgKCFuZXdT
dHlsZS5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKS5pc0VtcHR5KCkgfHwgKG9sZFN0eWxlICYmICFv
bGRTdHlsZS0+c2Nyb2xsU25hcENvb3JkaW5hdGVzKCkuaXNFbXB0eSgpKSkgewogICAgICAgICBB
U1NFUlQoaXM8UmVuZGVyQm94Pih0aGlzKSk7Ci0gICAgICAgIGlmIChuZXdTdHlsZS5zY3JvbGxT
bmFwQ29vcmRpbmF0ZXMoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2aWV3KCkudW5yZWdpc3Rl
ckJveFdpdGhTY3JvbGxTbmFwQ29vcmRpbmF0ZXMoZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2aWV3KCkucmVnaXN0ZXJCb3hXaXRoU2Nyb2xs
U25hcENvb3JkaW5hdGVzKGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpKTsKKyAgICAgICAgUmVu
ZGVyQm94JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKKyAgICAgICAg
UmVuZGVyVmlldyYgcmVuZGVyVmlldyA9IHZpZXcoKTsKKyAgICAgICAgaWYgKG5ld1N0eWxlLnNj
cm9sbFNuYXBDb29yZGluYXRlcygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVuZGVyVmll
dy51bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBDb29yZGluYXRlcyhyZW5kZXJCb3gpOworICAg
ICAgICAgICAgcmVuZGVyQm94LmNsZWFyU2Nyb2xsU25hcFBhcmVudExheWVyKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICByZW5kZXJWaWV3LnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNu
YXBDb29yZGluYXRlcyhyZW5kZXJCb3gpOworICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBz
Y3JvbGxTbmFwTGF5ZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKCkpCisgICAgICAg
ICAgICAgICAgcmVuZGVyQm94LnNldFNjcm9sbFNuYXBQYXJlbnRMYXllcigqc2Nyb2xsU25hcExh
eWVyKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKGlzUm9vdCgpIHx8IGlz
Qm9keSgpKQogICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkudXBkYXRlRXh0ZW5kQmFja2dyb3Vu
ZElmTmVjZXNzYXJ5KCk7CiB9CisgICAgCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKy8v
IE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGxheWVyIChlLmcuIHNldHRpbmcg
YSBub2RlIHRvIGhhdmUgc2Nyb2xsIHNuYXAgY29vcmRpbmF0ZXMKKy8vIHdoZW4gdGhlcmUgbm8g
c2Nyb2xsIHNuYXAgY29udGFpbmVyIGV4aXN0cykuCitSZW5kZXJMYXllciogUmVuZGVyRWxlbWVu
dDo6ZmluZEVuY2xvc2luZ1Njcm9sbFNuYXBMYXllcigpIGNvbnN0Cit7CisgICAgUmVuZGVyTGF5
ZXIqIGN1cnJlbnRMYXllciA9IGVuY2xvc2luZ0xheWVyKCk7CisgICAgYm9vbCBmb3VuZFNjcm9s
bFNuYXBMYXllciA9IGZhbHNlOworICAgIHdoaWxlIChjdXJyZW50TGF5ZXIgJiYgY3VycmVudExh
eWVyLT5yZW5kZXJCb3goKSkgeworICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFJl
bmRlclN0eWxlID0gY3VycmVudExheWVyLT5yZW5kZXJCb3goKS0+c3R5bGUoKTsKKyAgICAgICAg
aWYgKGN1cnJlbnRSZW5kZXJTdHlsZS5zY3JvbGxTbmFwVHlwZSgpICE9IFNjcm9sbFNuYXBUeXBl
OjpOb25lKSB7CisgICAgICAgICAgICBmb3VuZFNjcm9sbFNuYXBMYXllciA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGN1cnJlbnRM
YXllci0+cmVuZGVyQm94KCktPmVuY2xvc2luZ0xheWVyKCkgPT0gY3VycmVudExheWVyKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBjdXJyZW50TGF5ZXIgPSBjdXJyZW50
TGF5ZXItPnJlbmRlckJveCgpLT5lbmNsb3NpbmdMYXllcigpOworICAgIH0KKyAgICByZXR1cm4g
Zm91bmRTY3JvbGxTbmFwTGF5ZXIgPyBjdXJyZW50TGF5ZXIgOiBudWxscHRyOworfQorI2VuZGlm
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6aGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25DaGFuZ2Uo
KQogewpAQCAtMTA3Miw3ICsxMTAxLDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1v
dmVkRnJvbVRyZWUoKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYgKCFtX3N0
eWxlLT5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJU
KGlzPFJlbmRlckJveD4odGhpcykpOwotICAgICAgICB2aWV3KCkudW5yZWdpc3RlckJveFdpdGhT
Y3JvbGxTbmFwQ29vcmRpbmF0ZXMoZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykpOworICAgICAg
ICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpOworICAg
ICAgICB2aWV3KCkudW5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwQ29vcmRpbmF0ZXMocmVuZGVy
Qm94KTsKKyAgICAgICAgcmVuZGVyQm94LmNsZWFyU2Nyb2xsU25hcFBhcmVudExheWVyKCk7CiAg
ICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmlu
ZGV4IDVmNmM3M2IyYmJkNzRjNjFjNDA3ZTA5ZjQ0YjIxZGQ3NTU4OTJmYTMuLjNlOWJmNGI0YmFi
OTEzYWQ2Y2ZmMjljNWEyZGViNmUyNzc3YjY4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaApAQCAtMjk4LDYgKzI5OCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQpIGNvbnN0OwogICAgIGJvb2wgZ2V0
VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0KSBjb25zdDsKIAorI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCisgICAgUmVuZGVyTGF5ZXIqIGZpbmRFbmNsb3NpbmdTY3JvbGxTbmFw
TGF5ZXIoKSBjb25zdDsKKyNlbmRpZgorICAgIAogICAgIHVuc2lnbmVkIG1fYmFzZVR5cGVGbGFn
cyA6IDY7CiAgICAgdW5zaWduZWQgbV9hbmNlc3RvckxpbmVCb3hEaXJ0eSA6IDE7CiAgICAgdW5z
aWduZWQgbV9oYXNJbml0aWFsaXplZFN0eWxlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjNGQzMWViNGNjMTIw
YzEyOTdmZGJjZDEzNjFiMDMwMTUzNmEzOWViLi5hNGM1MDUxZGExNzNiOTc1MTRiYzlhNDU4MjM3
MzQwYWQ2ZGEyZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0xNjksNiArMTY5LDI4IEBAIHZvaWQgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5y
ZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KHRoaXMpOwogICAgIH0KKyAgICAKKyNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSA9
IHN0eWxlKCk7CisgICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHlsZS0+c2Nyb2xsU25hcFR5cGUo
KSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwVHlwZSgpIHx8IG9sZFN0eWxlLT5zY3JvbGxTbmFwUG9p
bnRzWCgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBQb2ludHNYKCkKKyAgICAgICAgfHwgb2xkU3R5
bGUtPnNjcm9sbFNuYXBQb2ludHNZKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcFBvaW50c1koKSB8
fCBvbGRTdHlsZS0+c2Nyb2xsU25hcERlc3RpbmF0aW9uKCkud2lkdGgoKSAhPSBuZXdTdHlsZS5z
Y3JvbGxTbmFwRGVzdGluYXRpb24oKS53aWR0aCgpCisgICAgICAgIHx8IG9sZFN0eWxlLT5zY3Jv
bGxTbmFwRGVzdGluYXRpb24oKS5oZWlnaHQoKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwRGVzdGlu
YXRpb24oKS5oZWlnaHQoKSkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiByZW5kZXJMYXll
ciA9IGxheWVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVTbmFwT2Zmc2V0
cygpOworICAgICAgICAgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOwor
ICAgICAgICB9IGVsc2UgaWYgKGlzQm9keSgpIHx8IGlzUm9vdCgpKSB7CisgICAgICAgICAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZy
YW1lVmlldy51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0
ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChvbGRTdHlsZSAm
JiBvbGRTdHlsZS0+c2Nyb2xsU25hcENvb3JkaW5hdGVzKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25h
cENvb3JkaW5hdGVzKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiBzY3JvbGxTbmFwTGF5
ZXIgPSBlbmNsb3NpbmdCb3goKS5zY3JvbGxTbmFwUGFyZW50TGF5ZXIoKSkgeworICAgICAgICAg
ICAgc2Nyb2xsU25hcExheWVyLT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgc2Ny
b2xsU25hcExheWVyLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzY2NDQyMGQ5Njhh
ZDI2ZGI0OWNhOGYzOWFiMjExMDkwNTY1NzMyNC4uYjgyZmI5MTU1NTM3MTU1YzcxYWQyZDJhODQx
OTQ5MzBmYzcwZThkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3LTA2ICBXZW5zb24g
SHNpZWggIDx3aHNpZWhAYmVya2VsZXkuZWR1PgorCisgICAgICAgIFNuYXAgb2Zmc2V0cyBzaG91
bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy5odG1sOiBBZGRl
ZC4KKwogMjAxNS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9u
LmZyPgogCiAgICAgICAgIFByb21pc2UtcmV0dXJuaW5nIGZ1bmN0aW9ucyBzaG91bGQgcmVqZWN0
IHByb21pc2VzIGlmIHRoZSBjYWxsZWUgaXMgbm90IG9mIHRoZSBleHBlY3RlZCB0eXBlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNo
YW5nZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdHlsZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTM0ZjQ5MmZiY2Nm
ZDhhNjkzZDkwNWQzMzNmNThhNGMzZDQ0ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK1Rlc3RpbmcgcmVwZWF0KCkgZ2FsbGVyeS4uLgorT3JpZ2luYWwgc25hcCBv
ZmZzZXRzOiBob3Jpem9udGFsID0geyAwLCA1MDAsIDEwMDAsIDE1MDAsIDIwMDAsIDI1MDAgfQor
VXBkYXRlZCBwb2ludHMteCB0byByZXBlYXQoMTAwMHB4KTogaG9yaXpvbnRhbCA9IHsgMCwgMTAw
MCwgMjAwMCwgMjUwMCB9CitVcGRhdGVkIGRlc3RpbmF0aW9uIHRvIDI1MHB4IDBweDogaG9yaXpv
bnRhbCA9IHsgMCwgNzUwLCAxNzUwLCAyNTAwIH0KK1VwZGF0ZWQgdHlwZSB0byBub25lOgorVGVz
dGluZyBjb29yZGluYXRlcyBnYWxsZXJ5Li4uCitPcmlnaW5hbCBzbmFwIG9mZnNldHM6IGhvcml6
b250YWwgPSB7IDAsIDUwMCwgMTAwMCwgMTUwMCwgMjAwMCwgMjUwMCB9CitVcGRhdGVkIGNoaWxk
IGNvb3JkaW5hdGVzIHRvIDI1MHB4IDBweDogaG9yaXpvbnRhbCA9IHsgMCwgMjUwLCA3NTAsIDEy
NTAsIDE3NTAsIDIyNTAsIDI1MDAgfQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIxMTJl
ZGM0MjQ3YzRhYzVjNmViMmMyZTRlMDcxMGEyMzQ2ZjY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy5odG1s
CkBAIC0wLDAgKzEsMTA3IEBACis8aHRtbD4KKworICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuZ2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDUwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogNTE1cHg7CisgICAgICAgICAgICAgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1h
bmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91
Y2g7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogc2Nyb2xsOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjcmVwZWF0LWdhbGxlcnkgeworICAgICAgICAgICAgICAgIC13ZWJraXQt
c2Nyb2xsLXNuYXAtcG9pbnRzLXg6IHJlcGVhdCg1MDBweCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiA1MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5zbmFwLWNvb3JkIHsK
KyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAlIDAlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuaGNoaWxkMDAgeyBiYWNrZ3JvdW5kLWNvbG9y
OiAjREQwMDAwOyB9CisgICAgICAgICAgICAuaGNoaWxkMDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkY2NjY2OyB9CisgICAgICAgICAgICAuaGNoaWxkMDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBE
RDAwOyB9CisgICAgICAgICAgICAuaGNoaWxkMDMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2
OyB9CisgICAgICAgICAgICAuaGNoaWxkMDQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEREOyB9
CisgICAgICAgICAgICAuaGNoaWxkMDUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NkZGOyB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biBvbmxvYWQoKSB7CisgICAgICAgICAgICB2YXIgc3R5bGVVcGRhdGVEZWxheU1TID0gNTA7Cisg
ICAgICAgICAgICB2YXIgcmVwZWF0R2FsbGVyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXBlYXQtZ2FsbGVyeSIpOworICAgICAgICAgICAgdmFyIGNvb3JkaW5hdGVzR2FsbGVyeSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb29yZGluYXRlcy1nYWxsZXJ5Iik7CisgICAgICAgICAg
ICB2YXIgY29vcmRpbmF0ZUNoaWxkRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJzbmFwLWNvb3JkIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNuYXBPZmZzZXRz
KGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmludGVybmFscy5zY3Jv
bGxTbmFwT2Zmc2V0cyhlbGVtZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGVzdCBzdGFydHMgaGVyZS4gRWFjaCBmdW5jdGlvbiBjYWxsIHRyaWdnZXJzIHRoZSBuZXh0Lgor
ICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0c0FuZFVwZGF0
ZVBvaW50c1goKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3RpbmcgcmVwZWF0KCkgZ2Fs
bGVyeS4uLiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJPcmlnaW5hbCBzbmFwIG9mZnNldHM6
ICIgKyBzbmFwT2Zmc2V0cyhyZXBlYXRHYWxsZXJ5KSk7CisgICAgICAgICAgICAgICAgcmVwZWF0
R2FsbGVyeS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwUG9pbnRzWCA9ICJyZXBlYXQoMTAwMHB4KSI7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wUmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRz
QW5kVXBkYXRlRGVzdGluYXRpb24sIHN0eWxlVXBkYXRlRGVsYXlNUyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBSZXBlYXRHYWxsZXJ5U25hcE9mZnNldHNBbmRV
cGRhdGVEZXN0aW5hdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCBwb2lu
dHMteCB0byByZXBlYXQoMTAwMHB4KTogIiArIHNuYXBPZmZzZXRzKHJlcGVhdEdhbGxlcnkpKTsK
KyAgICAgICAgICAgICAgICByZXBlYXRHYWxsZXJ5LnN0eWxlLndlYmtpdFNjcm9sbFNuYXBEZXN0
aW5hdGlvbiA9ICIyNTBweCAwcHgiOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFJl
cGVhdEdhbGxlcnlTbmFwT2Zmc2V0c0FuZFVwZGF0ZVR5cGUsIHN0eWxlVXBkYXRlRGVsYXlNUyk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBSZXBlYXRHYWxsZXJ5
U25hcE9mZnNldHNBbmRVcGRhdGVUeXBlKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRh
dGVkIGRlc3RpbmF0aW9uIHRvIDI1MHB4IDBweDogIiArIHNuYXBPZmZzZXRzKHJlcGVhdEdhbGxl
cnkpKTsKKyAgICAgICAgICAgICAgICByZXBlYXRHYWxsZXJ5LnN0eWxlLndlYmtpdFNjcm9sbFNu
YXBUeXBlID0gIm5vbmUiOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFJlcGVhdEdh
bGxlcnlTbmFwT2Zmc2V0c0FuZFRlc3RDb29yZGluYXRlc0dhbGxlcnksIHN0eWxlVXBkYXRlRGVs
YXlNUyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBSZXBlYXRH
YWxsZXJ5U25hcE9mZnNldHNBbmRUZXN0Q29vcmRpbmF0ZXNHYWxsZXJ5KCkgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJVcGRhdGVkIHR5cGUgdG8gbm9uZToiICsgc25hcE9mZnNldHMocmVwZWF0
R2FsbGVyeSkpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcENvb3JkaW5hdGVzR2Fs
bGVyeUFuZFVwZGF0ZUNvb3JkaW5hdGVzLCBzdHlsZVVwZGF0ZURlbGF5TVMpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wQ29vcmRpbmF0ZXNHYWxsZXJ5QW5kVXBk
YXRlQ29vcmRpbmF0ZXMoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3RpbmcgY29vcmRp
bmF0ZXMgZ2FsbGVyeS4uLiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJPcmlnaW5hbCBzbmFw
IG9mZnNldHM6ICIgKyBzbmFwT2Zmc2V0cyhjb29yZGluYXRlc0dhbGxlcnkpKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY29vcmRpbmF0ZUNoaWxkRWxlbWVu
dHMubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlQ2hpbGRF
bGVtZW50c1tpbmRleF0uc3R5bGUud2Via2l0U2Nyb2xsU25hcENvb3JkaW5hdGUgPSAiMjUwcHgg
MHB4IjsKKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcENvb3JkaW5hdGVzR2FsbGVy
eUFuZEZpbmlzaFRlc3QsIHN0eWxlVXBkYXRlRGVsYXlNUyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGR1bXBDb29yZGluYXRlc0dhbGxlcnlBbmRGaW5pc2hUZXN0KCkg
eworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVkIGNoaWxkIGNvb3JkaW5hdGVzIHRvIDI1
MHB4IDBweDogIiArIHNuYXBPZmZzZXRzKGNvb3JkaW5hdGVzR2FsbGVyeSkpOworICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1w
UmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5kVXBkYXRlUG9pbnRzWCwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJv
ZHkgb25sb2FkPSJvbmxvYWQoKTsiPgorICAgICAgICA8ZGl2IGlkPSJyZXBlYXQtZ2FsbGVyeSIg
Y2xhc3M9ImdhbGxlcnkiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbCBoY2hp
bGQwMCI+PC9kaXY+PGRpdiBjbGFzcz0iaG9yaXpvbnRhbCBoY2hpbGQwMSI+PC9kaXY+PGRpdiBj
bGFzcz0iaG9yaXpvbnRhbCBoY2hpbGQwMiI+PC9kaXY+PGRpdiBjbGFzcz0iaG9yaXpvbnRhbCBo
Y2hpbGQwMyI+PC9kaXY+PGRpdiBjbGFzcz0iaG9yaXpvbnRhbCBoY2hpbGQwNCI+PC9kaXY+PGRp
diBjbGFzcz0iaG9yaXpvbnRhbCBoY2hpbGQwNSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
ICAgICA8ZGl2IGlkPSJjb29yZGluYXRlcy1nYWxsZXJ5IiBjbGFzcz0iZ2FsbGVyeSI+CisgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwLWNvb3JkIGhvcml6b250YWwgaGNoaWxkMDAiPjwvZGl2
PjxkaXYgY2xhc3M9InNuYXAtY29vcmQgaG9yaXpvbnRhbCBoY2hpbGQwMSI+PC9kaXY+PGRpdiBj
bGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAyIj48L2Rpdj48ZGl2IGNsYXNzPSJz
bmFwLWNvb3JkIGhvcml6b250YWwgaGNoaWxkMDMiPjwvZGl2PjxkaXYgY2xhc3M9InNuYXAtY29v
cmQgaG9yaXpvbnRhbCBoY2hpbGQwNCI+PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jp
em9udGFsIGhjaGlsZDA1Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2Jv
ZHk+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256276</attachid>
            <date>2015-07-06 23:11:47 -0700</date>
            <delta_ts>2015-07-07 22:57:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150706231048.patch</filename>
            <type>text/plain</type>
            <size>16033</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBhMTA0NWY0NDkyZmZm
OTM0ZTIzOWM5NWY2YjAzMmRkZmE5MGRhNi4uNGM1ZWFhMDBhMjU2ZDI0YWNlY2Q1YmY5YzJiMjA5
YjlmYzRiNjBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA3LTA2ICBXZW5z
b24gSHNpZWggIDx3aHNpZWhAYmVya2VsZXkuZWR1PgorCisgICAgICAgIFNuYXAgb2Zmc2V0cyBz
aG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbAorCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmZpbmRFbmNsb3NpbmdTY3Jv
bGxTbmFwTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOgorCiAyMDE1LTA3
LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmVydCB1c2Ugb2YgIFNWRyA8bWFzaz4gZWxlbWVudHMgZm9yIC13ZWJraXQtbWFzay1pbWFnZSAo
cjE3Njc5OCwgcjE3NzQ5NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMjljNjZmMTkxMDM4
NzczMTI4YWNlYzBlOTU4YmY5N2FjZjgyOTQzZC4uMWU4ZjVlMjQ3ODNiZjA5MzNiMDcxMDhiOWIy
OGRlY2JjNzBiNGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTYyLDE0ICs2MiwxNSBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZVByb3Bl
cnRpZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi1zdGF0
aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNv
bnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRz
QXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhp
cyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRzLCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogSW5jb3Jwb3JhdGUgY3VycmVudCBwYWdl
IHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4ZWwuIFBlcmhhcHMgd2Ugc2hv
dWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQgVUkgcHJvY2VzcyBkbyB0aGUg
cGl4ZWwgc25hcHBpbmc/CiAgICAgVmVjdG9yPGZsb2F0PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7Ci0g
ICAgc25hcE9mZnNldHNBc0Zsb2F0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc25hcE9mZnNldHMu
c2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIG9mZnNldCA6IHNuYXBPZmZzZXRzKQotICAgICAgICBz
bmFwT2Zmc2V0c0FzRmxvYXQuYXBwZW5kKHJvdW5kVG9EZXZpY2VQaXhlbChvZmZzZXQsIGRldmlj
ZVNjYWxlRmFjdG9yLCBmYWxzZSkpOwotCisgICAgaWYgKHNuYXBPZmZzZXRzKSB7CisgICAgICAg
IHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNuYXBPZmZzZXRzLT5z
aXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9mZnNldCA6ICpzbmFwT2Zmc2V0cykKKyAgICAg
ICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5hcHBlbmQocm91bmRUb0RldmljZVBpeGVsKG9mZnNl
dCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7CisgICAgfQogICAgIGlmIChheGlzID09IFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkKICAgICAgICAgbm9kZS5zZXRIb3Jpem9udGFsU25h
cE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKICAgICBlbHNlCkBAIC0xNDEsMTEgKzE0Miw4
IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRl
ZChGcmFtZVZpZXcmIGZyYW1lVmlldykKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRzKCk7Ci0gICAgaWYgKGNvbnN0IFZlY3RvcjxM
YXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3Lmhvcml6b250YWxT
bmFwT2Zmc2V0cygpKQotICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKmhvcml6b250YWxTbmFw
T2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLQotICAgIGlmIChjb25zdCBW
ZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMgPSBmcmFtZVZpZXcudmVydGlj
YWxTbmFwT2Zmc2V0cygpKQotICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0
c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsICp2ZXJ0aWNhbFNuYXBP
ZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xs
aW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0
KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVydGljYWxTbmFw
T2Zmc2V0cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgbm9kZS0+c2V0
Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChmcmFtZVZpZXcuY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleChmcmFtZVZpZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CkBAIC00
ODUsOCArNDgzLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGUKICAgICAgICAgbm9kZS0+c2V0
UmVhY2hhYmxlQ29udGVudHNTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5yZWFjaGFibGVDb250ZW50
U2l6ZSk7CiAgICAgICAgIG5vZGUtPnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxpbmdHZW9t
ZXRyeS0+c2Nyb2xsYWJsZUFyZWFTaXplKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
ICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxT
bmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3Rh
dGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsLCBzY3JvbGxpbmdHZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICZzY3Jv
bGxpbmdHZW9tZXRyeS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxv
YXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsICZzY3JvbGxpbmdHZW9tZXRyeS0+
dmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAg
ICAgbm9kZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxpbmdHZW9t
ZXRyeS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIG5vZGUtPnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxMzJjZGRlMjY1ZmU2MjA4OWQyMzA5ZDk4N2Q3NjBm
Y2NhOGJmMTUzLi5iNWQ3MzQ2MmZkYjI0NDRiNDAwNjdkNDQ4YzE1NTYzN2ExN2IxMmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xNDkwLDYgKzE0
OTAsMjkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjphZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3QKIHsKICAgICBjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXAoKS5hZGQobywgc3RhdGVzKTsKIH0KKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQorLy8gTWF5IHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbGF5ZXIgKGUu
Zy4gc2V0dGluZyBhIG5vZGUgdG8gaGF2ZSBzY3JvbGwgc25hcCBjb29yZGluYXRlcworLy8gd2hl
biB0aGVyZSBubyBzY3JvbGwgc25hcCBjb250YWluZXIgZXhpc3RzKS4KK1JlbmRlckxheWVyKiBS
ZW5kZXJFbGVtZW50OjpmaW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKCkgY29uc3QKK3sKKyAg
ICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBib29s
IGZvdW5kU2Nyb2xsU25hcExheWVyID0gZmFsc2U7CisgICAgd2hpbGUgKGN1cnJlbnRMYXllciAm
JiBjdXJyZW50TGF5ZXItPnJlbmRlckJveCgpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBjdXJyZW50UmVuZGVyU3R5bGUgPSBjdXJyZW50TGF5ZXItPnJlbmRlckJveCgpLT5zdHlsZSgp
OworICAgICAgICBpZiAoY3VycmVudFJlbmRlclN0eWxlLnNjcm9sbFNuYXBUeXBlKCkgIT0gU2Ny
b2xsU25hcFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGZvdW5kU2Nyb2xsU25hcExheWVyID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoY3VycmVudExheWVyLT5yZW5kZXJCb3goKS0+ZW5jbG9zaW5nTGF5ZXIoKSA9PSBjdXJyZW50
TGF5ZXIpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIGN1cnJlbnRMYXll
ciA9IGN1cnJlbnRMYXllci0+cmVuZGVyQm94KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgfQor
ICAgIHJldHVybiBmb3VuZFNjcm9sbFNuYXBMYXllciA/IGN1cnJlbnRMYXllciA6IG51bGxwdHI7
Cit9CisjZW5kaWYKIAogUmVuZGVyU3R5bGUqIFJlbmRlckVsZW1lbnQ6OmdldENhY2hlZFBzZXVk
b1N0eWxlKFBzZXVkb0lkIHBzZXVkbywgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggNWY2YzczYjJi
YmQ3NGM2MWM0MDdlMDlmNDRiMjFkZDc1NTg5MmZhMy4uOGUzMzVhZTc0YTAyYWQwYzdlNGZkMzNm
ZGE1NWYyNjgzNmIyMWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCkBAIC0yNTIsNiArMjUyLDEwIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCByZW1v
dmVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAgICAgc3Rh
dGljIHZvaWQgYWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCos
IENvbnRyb2xTdGF0ZXMqKTsKIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisgICAgUmVu
ZGVyTGF5ZXIqIGZpbmRFbmNsb3NpbmdTY3JvbGxTbmFwTGF5ZXIoKSBjb25zdDsKKyNlbmRpZgor
ICAgIAogICAgIHZvaWQgc2V0UmVuZGVyQmxvY2tIYXNNYXJnaW5CZWZvcmVRdWlyayhib29sIGIp
IHsgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrID0gYjsgfQogICAgIHZvaWQgc2V0
UmVuZGVyQmxvY2tIYXNNYXJnaW5BZnRlclF1aXJrKGJvb2wgYikgeyBtX3JlbmRlckJsb2NrSGFz
TWFyZ2luQWZ0ZXJRdWlyayA9IGI7IH0KICAgICB2b2lkIHNldFJlbmRlckJsb2NrSGFzQm9yZGVy
T3JQYWRkaW5nTG9naWNhbFdpZHRoQ2hhbmdlZChib29sIGIpIHsgbV9yZW5kZXJCbG9ja0hhc0Jv
cmRlck9yUGFkZGluZ0xvZ2ljYWxXaWR0aENoYW5nZWQgPSBiOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggYzRkMzFl
YjRjYzEyMGMxMjk3ZmRiY2QxMzYxYjAzMDE1MzZhMzllYi4uNTAyZWViYjFhYjAwMmMxZjRhMjZi
NDVhNjc0YjlkZTUwNDEzOGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTY5LDYgKzE2OSwyOCBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2aWV3KCkuZnJhbWVW
aWV3KCkucmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCh0aGlzKTsKICAgICB9CisgICAg
CisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUgPSBzdHlsZSgpOworICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPnNjcm9sbFNu
YXBUeXBlKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcFR5cGUoKSB8fCBvbGRTdHlsZS0+c2Nyb2xs
U25hcFBvaW50c1goKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwUG9pbnRzWCgpCisgICAgICAgIHx8
IG9sZFN0eWxlLT5zY3JvbGxTbmFwUG9pbnRzWSgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBQb2lu
dHNZKCkgfHwgb2xkU3R5bGUtPnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLndpZHRoKCkgIT0gbmV3
U3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkud2lkdGgoKQorICAgICAgICB8fCBvbGRTdHls
ZS0+c2Nyb2xsU25hcERlc3RpbmF0aW9uKCkuaGVpZ2h0KCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25h
cERlc3RpbmF0aW9uKCkuaGVpZ2h0KCkpKSB7CisgICAgICAgIGlmIChSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIgPSBsYXllcigpKSB7CisgICAgICAgICAgICByZW5kZXJMYXllci0+dXBkYXRlU25h
cE9mZnNldHMoKTsKKyAgICAgICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVTY3JvbGxTbmFwU3Rh
dGUoKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0JvZHkoKSB8fCBpc1Jvb3QoKSkgeworICAgICAg
ICAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSB2aWV3KCkuZnJhbWVWaWV3KCk7CisgICAgICAg
ICAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICAgICAgICAgIGZyYW1lVmll
dy51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAob2xk
U3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBDb29yZGluYXRlcygpICE9IG5ld1N0eWxlLnNj
cm9sbFNuYXBDb29yZGluYXRlcygpKSB7CisgICAgICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xs
U25hcExheWVyID0gZW5jbG9zaW5nQm94KCkuZmluZEVuY2xvc2luZ1Njcm9sbFNuYXBMYXllcigp
KSB7CisgICAgICAgICAgICBzY3JvbGxTbmFwTGF5ZXItPnVwZGF0ZVNuYXBPZmZzZXRzKCk7Cisg
ICAgICAgICAgICBzY3JvbGxTbmFwTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwZTRlY2VhNjJjNmExMWE5ZWQyMmRjM2RlNzk5MmY4MDNkMGYzOWM2Li4yZjIxZjI5ZTAwYmJl
OTRjNmExNjBmYmRjNTlkOTc2NWFiMjljYWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MDctMDYgIFdlbnNvbiBIc2llaCAgPHdoc2llaEBiZXJrZWxleS5lZHU+CisKKyAgICAgICAgU25h
cCBvZmZzZXRzIHNob3VsZCB1cGRhdGUgd2hlbiBzdHlsZSBpcyBwcm9ncmFtbWF0aWNhbGx5IGNo
YW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFu
Z2VzLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA3LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCB1c2Ugb2YgU1ZHIDxtYXNrPiBlbGVtZW50
cyBmb3IgLXdlYmtpdC1tYXNrLWltYWdlIChyMTc2Nzk4LCByMTc3NDk0LCByMTg2MTgwKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1j
aGFuZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtc3R5bGUtY2hhbmdlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzNGY0OTJmYmNj
ZmQ4YTY5M2Q5MDVkMzMzZjU4YTRjM2Q0NGY3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNSBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitUZXN0aW5nIHJlcGVhdCgpIGdhbGxlcnkuLi4KK09yaWdpbmFsIHNuYXAg
b2Zmc2V0czogaG9yaXpvbnRhbCA9IHsgMCwgNTAwLCAxMDAwLCAxNTAwLCAyMDAwLCAyNTAwIH0K
K1VwZGF0ZWQgcG9pbnRzLXggdG8gcmVwZWF0KDEwMDBweCk6IGhvcml6b250YWwgPSB7IDAsIDEw
MDAsIDIwMDAsIDI1MDAgfQorVXBkYXRlZCBkZXN0aW5hdGlvbiB0byAyNTBweCAwcHg6IGhvcml6
b250YWwgPSB7IDAsIDc1MCwgMTc1MCwgMjUwMCB9CitVcGRhdGVkIHR5cGUgdG8gbm9uZToKK1Rl
c3RpbmcgY29vcmRpbmF0ZXMgZ2FsbGVyeS4uLgorT3JpZ2luYWwgc25hcCBvZmZzZXRzOiBob3Jp
em9udGFsID0geyAwLCA1MDAsIDEwMDAsIDE1MDAsIDIwMDAsIDI1MDAgfQorVXBkYXRlZCBjaGls
ZCBjb29yZGluYXRlcyB0byAyNTBweCAwcHg6IGhvcml6b250YWwgPSB7IDAsIDI1MCwgNzUwLCAx
MjUwLCAxNzUwLCAyMjUwLCAyNTAwIH0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMTEy
ZWRjNDI0N2M0YWM1YzZlYjJjMmU0ZTA3MTBhMjM0NmY2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRt
bApAQCAtMCwwICsxLDEwNyBAQAorPGh0bWw+CisKKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1MDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUxNXB4OworICAgICAgICAgICAgICAgIHdoaXRlLXNw
YWNlOiBub3dyYXA7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBt
YW5kYXRvcnk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRv
dWNoOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IHNjcm9sbDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgI3JlcGVhdC1nYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICAtd2Via2l0
LXNjcm9sbC1zbmFwLXBvaW50cy14OiByZXBlYXQoNTAwcHgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAuaG9yaXpvbnRhbCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDUwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuc25hcC1jb29yZCB7
CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRlOiAwJSAwJTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmhjaGlsZDAwIHsgYmFja2dyb3VuZC1jb2xv
cjogI0REMDAwMDsgfQorICAgICAgICAgICAgLmhjaGlsZDAxIHsgYmFja2dyb3VuZC1jb2xvcjog
I0ZGNjY2NjsgfQorICAgICAgICAgICAgLmhjaGlsZDAyIHsgYmFja2dyb3VuZC1jb2xvcjogIzAw
REQwMDsgfQorICAgICAgICAgICAgLmhjaGlsZDAzIHsgYmFja2dyb3VuZC1jb2xvcjogIzY2RkY2
NjsgfQorICAgICAgICAgICAgLmhjaGlsZDA0IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBERDsg
fQorICAgICAgICAgICAgLmhjaGlsZDA1IHsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjZGRjsgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gb25sb2FkKCkgeworICAgICAgICAgICAgdmFyIHN0eWxlVXBkYXRlRGVsYXlNUyA9IDUwOwor
ICAgICAgICAgICAgdmFyIHJlcGVhdEdhbGxlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVwZWF0LWdhbGxlcnkiKTsKKyAgICAgICAgICAgIHZhciBjb29yZGluYXRlc0dhbGxlcnkgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29vcmRpbmF0ZXMtZ2FsbGVyeSIpOworICAgICAgICAg
ICAgdmFyIGNvb3JkaW5hdGVDaGlsZEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgic25hcC1jb29yZCIpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzbmFwT2Zmc2V0
cyhlbGVtZW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbnRlcm5hbHMuc2Ny
b2xsU25hcE9mZnNldHMoZWxlbWVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRlc3Qgc3RhcnRzIGhlcmUuIEVhY2ggZnVuY3Rpb24gY2FsbCB0cmlnZ2VycyB0aGUgbmV4dC4K
KyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBSZXBlYXRHYWxsZXJ5U25hcE9mZnNldHNBbmRVcGRh
dGVQb2ludHNYKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHJlcGVhdCgpIGdh
bGxlcnkuLi4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiT3JpZ2luYWwgc25hcCBvZmZzZXRz
OiAiICsgc25hcE9mZnNldHMocmVwZWF0R2FsbGVyeSkpOworICAgICAgICAgICAgICAgIHJlcGVh
dEdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25hcFBvaW50c1ggPSAicmVwZWF0KDEwMDBweCki
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0
c0FuZFVwZGF0ZURlc3RpbmF0aW9uLCBzdHlsZVVwZGF0ZURlbGF5TVMpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wUmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5k
VXBkYXRlRGVzdGluYXRpb24oKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQgcG9p
bnRzLXggdG8gcmVwZWF0KDEwMDBweCk6ICIgKyBzbmFwT2Zmc2V0cyhyZXBlYXRHYWxsZXJ5KSk7
CisgICAgICAgICAgICAgICAgcmVwZWF0R2FsbGVyeS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwRGVz
dGluYXRpb24gPSAiMjUwcHggMHB4IjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBS
ZXBlYXRHYWxsZXJ5U25hcE9mZnNldHNBbmRVcGRhdGVUeXBlLCBzdHlsZVVwZGF0ZURlbGF5TVMp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wUmVwZWF0R2FsbGVy
eVNuYXBPZmZzZXRzQW5kVXBkYXRlVHlwZSgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVXBk
YXRlZCBkZXN0aW5hdGlvbiB0byAyNTBweCAwcHg6ICIgKyBzbmFwT2Zmc2V0cyhyZXBlYXRHYWxs
ZXJ5KSk7CisgICAgICAgICAgICAgICAgcmVwZWF0R2FsbGVyeS5zdHlsZS53ZWJraXRTY3JvbGxT
bmFwVHlwZSA9ICJub25lIjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBSZXBlYXRH
YWxsZXJ5U25hcE9mZnNldHNBbmRUZXN0Q29vcmRpbmF0ZXNHYWxsZXJ5LCBzdHlsZVVwZGF0ZURl
bGF5TVMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wUmVwZWF0
R2FsbGVyeVNuYXBPZmZzZXRzQW5kVGVzdENvb3JkaW5hdGVzR2FsbGVyeSgpIHsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiVXBkYXRlZCB0eXBlIHRvIG5vbmU6IiArIHNuYXBPZmZzZXRzKHJlcGVh
dEdhbGxlcnkpKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBDb29yZGluYXRlc0dh
bGxlcnlBbmRVcGRhdGVDb29yZGluYXRlcywgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcENvb3JkaW5hdGVzR2FsbGVyeUFuZFVw
ZGF0ZUNvb3JkaW5hdGVzKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIGNvb3Jk
aW5hdGVzIGdhbGxlcnkuLi4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiT3JpZ2luYWwgc25h
cCBvZmZzZXRzOiAiICsgc25hcE9mZnNldHMoY29vcmRpbmF0ZXNHYWxsZXJ5KSk7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvb3JkaW5hdGVDaGlsZEVsZW1l
bnRzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZUNoaWxk
RWxlbWVudHNbaW5kZXhdLnN0eWxlLndlYmtpdFNjcm9sbFNuYXBDb29yZGluYXRlID0gIjI1MHB4
IDBweCI7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBDb29yZGluYXRlc0dhbGxl
cnlBbmRGaW5pc2hUZXN0LCBzdHlsZVVwZGF0ZURlbGF5TVMpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBkdW1wQ29vcmRpbmF0ZXNHYWxsZXJ5QW5kRmluaXNoVGVzdCgp
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCBjaGlsZCBjb29yZGluYXRlcyB0byAy
NTBweCAwcHg6ICIgKyBzbmFwT2Zmc2V0cyhjb29yZGluYXRlc0dhbGxlcnkpKTsKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVt
cFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0c0FuZFVwZGF0ZVBvaW50c1gsIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxi
b2R5IG9ubG9hZD0ib25sb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBpZD0icmVwZWF0LWdhbGxlcnki
IGNsYXNzPSJnYWxsZXJ5Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNo
aWxkMDAiPjwvZGl2PjxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDEiPjwvZGl2PjxkaXYg
Y2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDIiPjwvZGl2PjxkaXYgY2xhc3M9Imhvcml6b250YWwg
aGNoaWxkMDMiPjwvZGl2PjxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDQiPjwvZGl2Pjxk
aXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29vcmRpbmF0ZXMtZ2FsbGVyeSIgY2xhc3M9ImdhbGxlcnkiPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAwIj48L2Rp
dj48ZGl2IGNsYXNzPSJzbmFwLWNvb3JkIGhvcml6b250YWwgaGNoaWxkMDEiPjwvZGl2PjxkaXYg
Y2xhc3M9InNuYXAtY29vcmQgaG9yaXpvbnRhbCBoY2hpbGQwMiI+PC9kaXY+PGRpdiBjbGFzcz0i
c25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAzIj48L2Rpdj48ZGl2IGNsYXNzPSJzbmFwLWNv
b3JkIGhvcml6b250YWwgaGNoaWxkMDQiPjwvZGl2PjxkaXYgY2xhc3M9InNuYXAtY29vcmQgaG9y
aXpvbnRhbCBoY2hpbGQwNSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256357</attachid>
            <date>2015-07-07 22:57:34 -0700</date>
            <delta_ts>2015-07-08 10:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150707225634.patch</filename>
            <type>text/plain</type>
            <size>16778</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkxMGYyNGI3NmE0ZjQ5
OTA5MGU2NzFkNmI1OTZiOWM0YTIxNzE0My4uNjM1NWU3YzAzNmJmM2Q2MzQyMjdhZmVjODExZjJi
YWZjN2Y1M2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA3LTA3ICBXZW5z
b24gSHNpZWggIDx3aHNpZWhAYmVya2VsZXkuZWR1PgorCisgICAgICAgIFNuYXAgb2Zmc2V0cyBz
aG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbAorCisgICAgICAgIFVwZGF0
aW5nIHNjcm9sbCBzbmFwIHN0eWxlIHByb3BlcnRpZXMgcHJvZ3JhbW1hdGljYWxseSBub3cgdXBk
YXRlIHRoZSBzY3JvbGwgc25hcCBjb250YWluZXIuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDogU2V0cyBzbmFwIG9mZnNldHMgdG8gYW4g
ZW1wdHkgdmVjdG9yIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0
ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQpOiBTZWUgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVk
KTogU2VlIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKTogU2VlIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDogQWRkZWQgbWV0aG9kIHRvIGZpbmQgdGhlIGNsb3Nl
c3QgZW5jbG9zaW5nIHNuYXAgbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpmaW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKTogU2VlIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFNlZSBhYm92ZS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6IENoZWNrcyBmb3Igc3R5bGUgY2hhbmdlcyBhbmQg
dXBkYXRlcyBzbmFwIG9mZnNldHMgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
OnNjcm9sbFNuYXBDb250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKTogU2VlIGFi
b3ZlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRD
aGFuZ2UpOiBTZWUgYWJvdmUuCisKIDIwMTUtMDctMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBvdmVyZmxvdyBjaGVja3MgZnJv
bSB0aGUgaW1wb3J0YW50IHZlY3RvcnMgdXNlZCBieSB0aGUgY29udGVudCBleHRlbnNpb25zIG1h
Y2hpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDI5YzY2ZjE5MTAzODc3MzEyOGFjZWMw
ZTk1OGJmOTdhY2Y4Mjk0M2QuLjFlOGY1ZTI0NzgzYmYwOTMzYjA3MTA4YjliMjhkZWNiYzcwYjRm
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02MiwxNCArNjIsMTUgQEAgdm9pZCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdl
ZCgpCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KIAotc3RhdGljIGlubGluZSB2
b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29u
c3QgVmVjdG9yPExheW91dFVuaXQ+KiBzbmFwT2Zmc2V0cywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpCiB7CiAgICAgLy8gRklYTUU6IEluY29ycG9yYXRlIGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0
b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNlIHBpeGVsLiBQZXJoYXBzIHdlIHNob3VsZCBqdXN0IGNv
bnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQgbGV0IFVJIHByb2Nlc3MgZG8gdGhlIHBpeGVsIHNuYXBw
aW5nPwogICAgIFZlY3RvcjxmbG9hdD4gc25hcE9mZnNldHNBc0Zsb2F0OwotICAgIHNuYXBPZmZz
ZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNuYXBPZmZzZXRzLnNpemUoKSk7Ci0g
ICAgZm9yIChhdXRvJiBvZmZzZXQgOiBzbmFwT2Zmc2V0cykKLSAgICAgICAgc25hcE9mZnNldHNB
c0Zsb2F0LmFwcGVuZChyb3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rv
ciwgZmFsc2UpKTsKLQorICAgIGlmIChzbmFwT2Zmc2V0cykgeworICAgICAgICBzbmFwT2Zmc2V0
c0FzRmxvYXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzbmFwT2Zmc2V0cy0+c2l6ZSgpKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiAqc25hcE9mZnNldHMpCisgICAgICAgICAgICBzbmFw
T2Zmc2V0c0FzRmxvYXQuYXBwZW5kKHJvdW5kVG9EZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkpOworICAgIH0KICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwpCiAgICAgICAgIG5vZGUuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHNu
YXBPZmZzZXRzQXNGbG9hdCk7CiAgICAgZWxzZQpAQCAtMTQxLDExICsxNDIsOCBAQCB2b2lkIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3
JiBmcmFtZVZpZXcpCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGZyYW1lVmll
dy51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4q
IGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmlldy5ob3Jpem9udGFsU25hcE9mZnNldHMo
KSkKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICpob3Jpem9udGFsU25hcE9mZnNldHMsIG1f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0KLSAgICBpZiAoY29uc3QgVmVjdG9yPExheW91
dFVuaXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNl
dHMoKSkKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpu
b2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqdmVydGljYWxTbmFwT2Zmc2V0cywgbV9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgZnJhbWVW
aWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkp
OworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldHMoKSwg
bV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIG5vZGUtPnNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoKSk7CiAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoZnJh
bWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwpAQCAtNDg1LDggKzQ4Myw4
IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlCiAgICAgICAgIG5vZGUtPnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+cmVhY2hhYmxlQ29udGVudFNpemUpOwogICAg
ICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnktPnNjcm9s
bGFibGVBcmVhU2l6ZSk7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAgICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25hcE9mZnNldHMs
IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwg
c2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNG
bG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAmc2Nyb2xsaW5nR2VvbWV0
cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
KyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25h
cE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG5vZGUtPnNl
dEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoc2Nyb2xsaW5nR2VvbWV0cnktPmN1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleChzY3JvbGxpbmdHZW9tZXRyeS0+Y3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggMTMyY2RkZTI2NWZlNjIwODlkMjMwOWQ5ODdkNzYwZmNjYThiZjE1My4u
OGVjNWViZDk3MDc3YmM1NmMzMTM4MTAyNzAxZTk2NDkwYzJjMjg0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQ5MCw2ICsxNDkwLDI1IEBAIHZv
aWQgUmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogbywgQ29udHJvbFN0CiB7CiAgICAgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCku
YWRkKG8sIHN0YXRlcyk7CiB9CisgICAgCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKy8v
IE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGxheWVyIChlLmcuIHNldHRpbmcg
YSBub2RlIHRvIGhhdmUgc2Nyb2xsIHNuYXAgY29vcmRpbmF0ZXMKKy8vIHdoZW4gdGhlcmUgbm8g
c2Nyb2xsIHNuYXAgY29udGFpbmVyIGV4aXN0cykuCitSZW5kZXJMYXllciogUmVuZGVyRWxlbWVu
dDo6ZmluZEVuY2xvc2luZ1Njcm9sbFNuYXBMYXllcigpIGNvbnN0Cit7CisgICAgUmVuZGVyQmxv
Y2sqIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5pbmdCbG9jaygpOworICAgIHdoaWxlIChjdXJyZW50
QmxvY2spIHsKKyAgICAgICAgaWYgKGN1cnJlbnRCbG9jay0+c3R5bGUoKS5zY3JvbGxTbmFwVHlw
ZSgpICE9IFNjcm9sbFNuYXBUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRC
bG9jay0+bGF5ZXIoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjdXJyZW50QmxvY2sgPT0gY3Vy
cmVudEJsb2NrLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGN1cnJlbnRCbG9jayA9IGN1cnJlbnRCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCiAKIFJlbmRlclN0eWxlKiBSZW5kZXJF
bGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCmluZGV4IDVmNmM3M2IyYmJkNzRjNjFjNDA3ZTA5ZjQ0YjIxZGQ3NTU4OTJmYTMuLjhl
MzM1YWU3NGEwMmFkMGM3ZTRmZDMzZmRhNTVmMjY4MzZiMjFkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMjUyLDYgKzI1MiwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGFkZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKik7CiAKKyNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQorICAgIFJlbmRlckxheWVyKiBmaW5kRW5jbG9zaW5nU2Nyb2xsU25hcExh
eWVyKCkgY29uc3Q7CisjZW5kaWYKKyAgICAKICAgICB2b2lkIHNldFJlbmRlckJsb2NrSGFzTWFy
Z2luQmVmb3JlUXVpcmsoYm9vbCBiKSB7IG1fcmVuZGVyQmxvY2tIYXNNYXJnaW5CZWZvcmVRdWly
ayA9IGI7IH0KICAgICB2b2lkIHNldFJlbmRlckJsb2NrSGFzTWFyZ2luQWZ0ZXJRdWlyayhib29s
IGIpIHsgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsgPSBiOyB9CiAgICAgdm9pZCBz
ZXRSZW5kZXJCbG9ja0hhc0JvcmRlck9yUGFkZGluZ0xvZ2ljYWxXaWR0aENoYW5nZWQoYm9vbCBi
KSB7IG1fcmVuZGVyQmxvY2tIYXNCb3JkZXJPclBhZGRpbmdMb2dpY2FsV2lkdGhDaGFuZ2VkID0g
YjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCmluZGV4IGM0ZDMxZWI0Y2MxMjBjMTI5N2ZkYmNkMTM2MWIwMzAxNTM2YTM5ZWIu
LjRlNjhiMzBiNjMxYWU4NzlmYmVjYmNkMjUwYmIyZjNiNmJiYzRjYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTEy
NCw2ICsxMjQsMTUgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclMKICAgICBSZW5kZXJFbGVtZW50
OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwogfQogCisjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKK3N0YXRpYyBib29sIHNjcm9sbFNuYXBDb250YWluZXJSZXF1aXJlc1VwZGF0
ZUZvclN0eWxlVXBkYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlKQoreworICAgIHJldHVybiBvbGRTdHlsZS5zY3JvbGxTbmFwVHlwZSgp
ICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBUeXBlKCkgfHwgb2xkU3R5bGUuc2Nyb2xsU25hcFBvaW50
c1goKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwUG9pbnRzWCgpCisgICAgICAgIHx8IG9sZFN0eWxl
LnNjcm9sbFNuYXBQb2ludHNZKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcFBvaW50c1koKSB8fCBv
bGRTdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKS53aWR0aCgpICE9IG5ld1N0eWxlLnNjcm9s
bFNuYXBEZXN0aW5hdGlvbigpLndpZHRoKCkKKyAgICAgICAgfHwgb2xkU3R5bGUuc2Nyb2xsU25h
cERlc3RpbmF0aW9uKCkuaGVpZ2h0KCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9u
KCkuaGVpZ2h0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKQogewogICAgIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0
eWxlKTsKQEAgLTE2OSw2ICsxNzgsMjYgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92ZVZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QodGhpcyk7CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCisgICAgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlID0gc3R5bGUoKTsKKyAgICBp
ZiAob2xkU3R5bGUgJiYgc2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVV
cGRhdGUoKm9sZFN0eWxlLCBuZXdTdHlsZSkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiBy
ZW5kZXJMYXllciA9IGxheWVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVT
bmFwT2Zmc2V0cygpOworICAgICAgICAgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBT
dGF0ZSgpOworICAgICAgICB9IGVsc2UgaWYgKGlzQm9keSgpIHx8IGlzUm9vdCgpKSB7CisgICAg
ICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAg
ICAgICAgIGZyYW1lVmlldy51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgZnJhbWVW
aWV3LnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChv
bGRTdHlsZSAmJiBvbGRTdHlsZS0+c2Nyb2xsU25hcENvb3JkaW5hdGVzKCkgIT0gbmV3U3R5bGUu
c2Nyb2xsU25hcENvb3JkaW5hdGVzKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiBzY3Jv
bGxTbmFwTGF5ZXIgPSBlbmNsb3NpbmdCb3goKS5maW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVy
KCkpIHsKKyAgICAgICAgICAgIHNjcm9sbFNuYXBMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsK
KyAgICAgICAgICAgIHNjcm9sbFNuYXBMYXllci0+dXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ4MGFmMTU5MjFkM2YzYzEyMGMyMjU5NzI4ZGJmNGYxMWRkNzk4YWUuLjYzZTE2NWE1YzM3
MjNjM2Q1OWI1MzRiN2UxOTI1YjM1ODY3NGI5NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
NS0wNy0wNyAgV2Vuc29uIEhzaWVoICA8d2hzaWVoQGJlcmtlbGV5LmVkdT4KKworICAgICAgICBT
bmFwIG9mZnNldHMgc2hvdWxkIHVwZGF0ZSB3aGVuIHN0eWxlIGlzIHByb2dyYW1tYXRpY2FsbHkg
Y2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM1OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNo
YW5nZXMuaHRtbDogQWRkZWQuCisKIDIwMTUtMDctMDcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB3aGVuIHBhcmVudCBpZnJhbWUgaXMgc2V0IHRvIGRp
c3BsYXkgbm9uZSBhbmQgdGhlIGNoaWxkIGZyYW1lIGlzIG11dGF0ZWQgdGhlIHNhbWUgdGltZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5
bGUtY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzRmNDky
ZmJjY2ZkOGE2OTNkOTA1ZDMzM2Y1OGE0YzNkNDRmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVGVzdGluZyByZXBlYXQoKSBnYWxsZXJ5Li4uCitPcmlnaW5hbCBz
bmFwIG9mZnNldHM6IGhvcml6b250YWwgPSB7IDAsIDUwMCwgMTAwMCwgMTUwMCwgMjAwMCwgMjUw
MCB9CitVcGRhdGVkIHBvaW50cy14IHRvIHJlcGVhdCgxMDAwcHgpOiBob3Jpem9udGFsID0geyAw
LCAxMDAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0ZWQgZGVzdGluYXRpb24gdG8gMjUwcHggMHB4OiBo
b3Jpem9udGFsID0geyAwLCA3NTAsIDE3NTAsIDI1MDAgfQorVXBkYXRlZCB0eXBlIHRvIG5vbmU6
CitUZXN0aW5nIGNvb3JkaW5hdGVzIGdhbGxlcnkuLi4KK09yaWdpbmFsIHNuYXAgb2Zmc2V0czog
aG9yaXpvbnRhbCA9IHsgMCwgNTAwLCAxMDAwLCAxNTAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0ZWQg
Y2hpbGQgY29vcmRpbmF0ZXMgdG8gMjUwcHggMHB4OiBob3Jpem9udGFsID0geyAwLCAyNTAsIDc1
MCwgMTI1MCwgMTc1MCwgMjI1MCwgMjUwMCB9CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MjExMmVkYzQyNDdjNGFjNWM2ZWIyYzJlNGUwNzEwYTIzNDZmNjQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2Vz
Lmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzxodG1sPgorCisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA1MTVweDsKKyAgICAgICAgICAgICAgICB3aGl0
ZS1zcGFjZTogbm93cmFwOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlw
ZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5n
OiB0b3VjaDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBzY3JvbGw7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICNyZXBlYXQtZ2FsbGVyeSB7CisgICAgICAgICAgICAgICAgLXdl
YmtpdC1zY3JvbGwtc25hcC1wb2ludHMteDogcmVwZWF0KDUwMHB4KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLmhvcml6b250YWwgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1MDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnNuYXAtY29v
cmQgeworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCUg
MCU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5oY2hpbGQwMCB7IGJhY2tncm91bmQt
Y29sb3I6ICNERDAwMDA7IH0KKyAgICAgICAgICAgIC5oY2hpbGQwMSB7IGJhY2tncm91bmQtY29s
b3I6ICNGRjY2NjY7IH0KKyAgICAgICAgICAgIC5oY2hpbGQwMiB7IGJhY2tncm91bmQtY29sb3I6
ICMwMEREMDA7IH0KKyAgICAgICAgICAgIC5oY2hpbGQwMyB7IGJhY2tncm91bmQtY29sb3I6ICM2
NkZGNjY7IH0KKyAgICAgICAgICAgIC5oY2hpbGQwNCB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAw
REQ7IH0KKyAgICAgICAgICAgIC5oY2hpbGQwNSB7IGJhY2tncm91bmQtY29sb3I6ICM2NjY2RkY7
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIG9ubG9hZCgpIHsKKyAgICAgICAgICAgIHZhciBzdHlsZVVwZGF0ZURlbGF5TVMgPSA1
MDsKKyAgICAgICAgICAgIHZhciByZXBlYXRHYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlcGVhdC1nYWxsZXJ5Iik7CisgICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNHYWxsZXJ5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvb3JkaW5hdGVzLWdhbGxlcnkiKTsKKyAgICAg
ICAgICAgIHZhciBjb29yZGluYXRlQ2hpbGRFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoInNuYXAtY29vcmQiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc25hcE9m
ZnNldHMoZWxlbWVudCkgeworICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuaW50ZXJuYWxz
LnNjcm9sbFNuYXBPZmZzZXRzKGVsZW1lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUZXN0IHN0YXJ0cyBoZXJlLiBFYWNoIGZ1bmN0aW9uIGNhbGwgdHJpZ2dlcnMgdGhlIG5l
eHQuCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wUmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5k
VXBkYXRlUG9pbnRzWCgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyByZXBlYXQo
KSBnYWxsZXJ5Li4uIik7CisgICAgICAgICAgICAgICAgZGVidWcoIk9yaWdpbmFsIHNuYXAgb2Zm
c2V0czogIiArIHNuYXBPZmZzZXRzKHJlcGVhdEdhbGxlcnkpKTsKKyAgICAgICAgICAgICAgICBy
ZXBlYXRHYWxsZXJ5LnN0eWxlLndlYmtpdFNjcm9sbFNuYXBQb2ludHNYID0gInJlcGVhdCgxMDAw
cHgpIjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBSZXBlYXRHYWxsZXJ5U25hcE9m
ZnNldHNBbmRVcGRhdGVEZXN0aW5hdGlvbiwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0
c0FuZFVwZGF0ZURlc3RpbmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVk
IHBvaW50cy14IHRvIHJlcGVhdCgxMDAwcHgpOiAiICsgc25hcE9mZnNldHMocmVwZWF0R2FsbGVy
eSkpOworICAgICAgICAgICAgICAgIHJlcGVhdEdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25h
cERlc3RpbmF0aW9uID0gIjI1MHB4IDBweCI7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChk
dW1wUmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5kVXBkYXRlVHlwZSwgc3R5bGVVcGRhdGVEZWxh
eU1TKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdh
bGxlcnlTbmFwT2Zmc2V0c0FuZFVwZGF0ZVR5cGUoKSB7CisgICAgICAgICAgICAgICAgZGVidWco
IlVwZGF0ZWQgZGVzdGluYXRpb24gdG8gMjUwcHggMHB4OiAiICsgc25hcE9mZnNldHMocmVwZWF0
R2FsbGVyeSkpOworICAgICAgICAgICAgICAgIHJlcGVhdEdhbGxlcnkuc3R5bGUud2Via2l0U2Ny
b2xsU25hcFR5cGUgPSAibm9uZSI7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wUmVw
ZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5kVGVzdENvb3JkaW5hdGVzR2FsbGVyeSwgc3R5bGVVcGRh
dGVEZWxheU1TKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJl
cGVhdEdhbGxlcnlTbmFwT2Zmc2V0c0FuZFRlc3RDb29yZGluYXRlc0dhbGxlcnkoKSB7CisgICAg
ICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQgdHlwZSB0byBub25lOiIgKyBzbmFwT2Zmc2V0cyhy
ZXBlYXRHYWxsZXJ5KSk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wQ29vcmRpbmF0
ZXNHYWxsZXJ5QW5kVXBkYXRlQ29vcmRpbmF0ZXMsIHN0eWxlVXBkYXRlRGVsYXlNUyk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBDb29yZGluYXRlc0dhbGxlcnlB
bmRVcGRhdGVDb29yZGluYXRlcygpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBj
b29yZGluYXRlcyBnYWxsZXJ5Li4uIik7CisgICAgICAgICAgICAgICAgZGVidWcoIk9yaWdpbmFs
IHNuYXAgb2Zmc2V0czogIiArIHNuYXBPZmZzZXRzKGNvb3JkaW5hdGVzR2FsbGVyeSkpOworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb29yZGluYXRlQ2hpbGRF
bGVtZW50cy5sZW5ndGg7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVD
aGlsZEVsZW1lbnRzW2luZGV4XS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwQ29vcmRpbmF0ZSA9ICIy
NTBweCAwcHgiOworCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wQ29vcmRpbmF0ZXNH
YWxsZXJ5QW5kRmluaXNoVGVzdCwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcENvb3JkaW5hdGVzR2FsbGVyeUFuZEZpbmlzaFRl
c3QoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQgY2hpbGQgY29vcmRpbmF0ZXMg
dG8gMjUwcHggMHB4OiAiICsgc25hcE9mZnNldHMoY29vcmRpbmF0ZXNHYWxsZXJ5KSk7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGR1bXBSZXBlYXRHYWxsZXJ5U25hcE9mZnNldHNBbmRVcGRhdGVQb2ludHNYLCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAg
ICA8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpOyI+CisgICAgICAgIDxkaXYgaWQ9InJlcGVhdC1nYWxs
ZXJ5IiBjbGFzcz0iZ2FsbGVyeSI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFs
IGhjaGlsZDAwIj48L2Rpdj48ZGl2IGNsYXNzPSJob3Jpem9udGFsIGhjaGlsZDAxIj48L2Rpdj48
ZGl2IGNsYXNzPSJob3Jpem9udGFsIGhjaGlsZDAyIj48L2Rpdj48ZGl2IGNsYXNzPSJob3Jpem9u
dGFsIGhjaGlsZDAzIj48L2Rpdj48ZGl2IGNsYXNzPSJob3Jpem9udGFsIGhjaGlsZDA0Ij48L2Rp
dj48ZGl2IGNsYXNzPSJob3Jpem9udGFsIGhjaGlsZDA1Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgICAgIDxkaXYgaWQ9ImNvb3JkaW5hdGVzLWdhbGxlcnkiIGNsYXNzPSJnYWxsZXJ5Ij4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtY29vcmQgaG9yaXpvbnRhbCBoY2hpbGQwMCI+
PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAxIj48L2Rpdj48
ZGl2IGNsYXNzPSJzbmFwLWNvb3JkIGhvcml6b250YWwgaGNoaWxkMDIiPjwvZGl2PjxkaXYgY2xh
c3M9InNuYXAtY29vcmQgaG9yaXpvbnRhbCBoY2hpbGQwMyI+PC9kaXY+PGRpdiBjbGFzcz0ic25h
cC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDA0Ij48L2Rpdj48ZGl2IGNsYXNzPSJzbmFwLWNvb3Jk
IGhvcml6b250YWwgaGNoaWxkMDUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAg
IDwvYm9keT4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256383</attachid>
            <date>2015-07-08 10:29:49 -0700</date>
            <delta_ts>2015-07-09 09:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150708102849.patch</filename>
            <type>text/plain</type>
            <size>17296</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkOTE0YmJiYWE1NzU2
YzJlOWViZmVmNGVkZjQxZGZiODRkNGY4My4uNWUzMjA3MGEyZGU1OGI4ODJiYWE0ZWIwZTFkZjQ3
M2E0YzNjMGY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA3LTA4ICBXZW5z
b24gSHNpZWggIDx3aHNpZWhAYmVya2VsZXkuZWR1PgorCisgICAgICAgIFNuYXAgb2Zmc2V0cyBz
aG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbAorCisgICAgICAgIFVwZGF0
aW5nIHNjcm9sbCBzbmFwIHN0eWxlIHByb3BlcnRpZXMgcHJvZ3JhbW1hdGljYWxseSBub3cgdXBk
YXRlIHRoZSBzY3JvbGwgc25hcCBjb250YWluZXIuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDogU2V0cyBzbmFwIG9mZnNldHMgdG8gYW4g
ZW1wdHkgdmVjdG9yIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlOjpzZXRTdGF0
ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQpOiBTZWUgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVk
KTogU2VlIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKTogU2VlIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDogQWRkZWQgbWV0aG9kIHRvIGZpbmQgdGhlIGNsb3Nl
c3QgZW5jbG9zaW5nIHNuYXAgbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpmaW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKTogU2VlIGFib3ZlLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6IFNlZSBhYm92ZS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6IENoZWNrcyBmb3Igc3R5bGUgY2hhbmdlcyBhbmQg
dXBkYXRlcyBzbmFwIG9mZnNldHMgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
OnNjcm9sbFNuYXBDb250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKTogU2VlIGFi
b3ZlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRD
aGFuZ2UpOiBTZWUgYWJvdmUuCisKIDIwMTUtMDctMDggIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFy
ICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBEZWFjdGl2YXRlIEdPYmpl
Y3QgYmluZGluZ3MgZm9yIHN0YXRpYyBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDI5YzY2ZjE5MTAzODc3MzEyOGFjZWMwZTk1OGJmOTdhY2Y4Mjk0M2QuLjFlOGY1ZTI0NzgzYmYw
OTMzYjA3MTA4YjliMjhkZWNiYzcwYjRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02
MiwxNCArNjIsMTUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdT
dGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQo
KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9sbEV2ZW50
QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05v
ZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBT
Y3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBzbmFwT2Zmc2V0
cywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IEluY29ycG9yYXRl
IGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNlIHBpeGVsLiBQ
ZXJoYXBzIHdlIHNob3VsZCBqdXN0IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQgbGV0IFVJIHBy
b2Nlc3MgZG8gdGhlIHBpeGVsIHNuYXBwaW5nPwogICAgIFZlY3RvcjxmbG9hdD4gc25hcE9mZnNl
dHNBc0Zsb2F0OwotICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNuYXBPZmZzZXRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBvZmZzZXQgOiBzbmFwT2Zmc2V0
cykKLSAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LmFwcGVuZChyb3VuZFRvRGV2aWNlUGl4ZWwo
b2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKLQorICAgIGlmIChzbmFwT2Zmc2V0
cykgeworICAgICAgICBzbmFwT2Zmc2V0c0FzRmxvYXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
bmFwT2Zmc2V0cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiAqc25hcE9m
ZnNldHMpCisgICAgICAgICAgICBzbmFwT2Zmc2V0c0FzRmxvYXQuYXBwZW5kKHJvdW5kVG9EZXZp
Y2VQaXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOworICAgIH0KICAgICBp
ZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpCiAgICAgICAgIG5vZGUuc2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRzQXNGbG9hdCk7CiAgICAgZWxzZQpAQCAt
MTQxLDExICsxNDIsOCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiAKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgIGZyYW1lVmlldy51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgIGlmIChj
b25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmll
dy5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2Rl
U25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICpo
b3Jpem9udGFsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0KLSAg
ICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gZnJh
bWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldHMoKSkKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAq
dmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBz
ZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBtX3Bh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBP
ZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgZnJhbWVWaWV3
LnZlcnRpY2FsU25hcE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAog
ICAgIG5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgbm9kZS0+c2V0Q3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KCkpOwpAQCAtNDg1LDggKzQ4Myw4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlCiAgICAg
ICAgIG5vZGUtPnNldFJlYWNoYWJsZUNvbnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+cmVh
Y2hhYmxlQ29udGVudFNpemUpOwogICAgICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVNpemUo
c2Nyb2xsaW5nR2VvbWV0cnktPnNjcm9sbGFibGVBcmVhU2l6ZSk7CiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zs
b2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ0dlb21ldHJ5
LT5ob3Jpem9udGFsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0g
ICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9m
ZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Ny
b2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAmc2Nyb2xs
aW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
c2Nyb2xsaW5nR2VvbWV0cnktPmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAg
ICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzY3JvbGxpbmdHZW9t
ZXRyeS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMTMyY2RkZTI2NWZlNjIwODlk
MjMwOWQ5ODdkNzYwZmNjYThiZjE1My4uOGVjNWViZDk3MDc3YmM1NmMzMTM4MTAyNzAxZTk2NDkw
YzJjMjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApA
QCAtMTQ5MCw2ICsxNDkwLDI1IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRkQ29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0CiB7CiAgICAgY29u
dHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuYWRkKG8sIHN0YXRlcyk7CiB9CisgICAgCisjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKKy8vIE1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBz
dWNoIGxheWVyIChlLmcuIHNldHRpbmcgYSBub2RlIHRvIGhhdmUgc2Nyb2xsIHNuYXAgY29vcmRp
bmF0ZXMKKy8vIHdoZW4gdGhlcmUgbm8gc2Nyb2xsIHNuYXAgY29udGFpbmVyIGV4aXN0cykuCitS
ZW5kZXJMYXllciogUmVuZGVyRWxlbWVudDo6ZmluZEVuY2xvc2luZ1Njcm9sbFNuYXBMYXllcigp
IGNvbnN0Cit7CisgICAgUmVuZGVyQmxvY2sqIGN1cnJlbnRCbG9jayA9IGNvbnRhaW5pbmdCbG9j
aygpOworICAgIHdoaWxlIChjdXJyZW50QmxvY2spIHsKKyAgICAgICAgaWYgKGN1cnJlbnRCbG9j
ay0+c3R5bGUoKS5zY3JvbGxTbmFwVHlwZSgpICE9IFNjcm9sbFNuYXBUeXBlOjpOb25lKQorICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRCbG9jay0+bGF5ZXIoKTsKKyAgICAgICAgCisgICAgICAg
IGlmIChjdXJyZW50QmxvY2sgPT0gY3VycmVudEJsb2NrLT5jb250YWluaW5nQmxvY2soKSkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGN1cnJlbnRCbG9jayA9IGN1cnJlbnRCbG9jay0+
Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlm
CiAKIFJlbmRlclN0eWxlKiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9JZCBwc2V1ZG8sIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDVmNmM3M2IyYmJkNzRjNjFjNDA3
ZTA5ZjQ0YjIxZGQ3NTU4OTJmYTMuLjhlMzM1YWU3NGEwMmFkMGM3ZTRmZDMzZmRhNTVmMjY4MzZi
MjFkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMjUy
LDYgKzI1MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlQ29udHJvbFN0
YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGFk
ZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3Rh
dGVzKik7CiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIFJlbmRlckxheWVyKiBm
aW5kRW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKCkgY29uc3Q7CisjZW5kaWYKKyAgICAKICAgICB2
b2lkIHNldFJlbmRlckJsb2NrSGFzTWFyZ2luQmVmb3JlUXVpcmsoYm9vbCBiKSB7IG1fcmVuZGVy
QmxvY2tIYXNNYXJnaW5CZWZvcmVRdWlyayA9IGI7IH0KICAgICB2b2lkIHNldFJlbmRlckJsb2Nr
SGFzTWFyZ2luQWZ0ZXJRdWlyayhib29sIGIpIHsgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVy
UXVpcmsgPSBiOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJCbG9ja0hhc0JvcmRlck9yUGFkZGluZ0xv
Z2ljYWxXaWR0aENoYW5nZWQoYm9vbCBiKSB7IG1fcmVuZGVyQmxvY2tIYXNCb3JkZXJPclBhZGRp
bmdMb2dpY2FsV2lkdGhDaGFuZ2VkID0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGM0ZDMxZWI0Y2MxMjBjMTI5
N2ZkYmNkMTM2MWIwMzAxNTM2YTM5ZWIuLjRlNjhiMzBiNjMxYWU4NzlmYmVjYmNkMjUwYmIyZjNi
NmJiYzRjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTEyNCw2ICsxMjQsMTUgQEAgdm9pZCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclMKICAgICBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUp
OwogfQogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKK3N0YXRpYyBib29sIHNjcm9sbFNu
YXBDb250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKGNvbnN0IFJlbmRlclN0eWxl
JiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQoreworICAgIHJldHVybiBv
bGRTdHlsZS5zY3JvbGxTbmFwVHlwZSgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBUeXBlKCkgfHwg
b2xkU3R5bGUuc2Nyb2xsU25hcFBvaW50c1goKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwUG9pbnRz
WCgpCisgICAgICAgIHx8IG9sZFN0eWxlLnNjcm9sbFNuYXBQb2ludHNZKCkgIT0gbmV3U3R5bGUu
c2Nyb2xsU25hcFBvaW50c1koKSB8fCBvbGRTdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKS53
aWR0aCgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLndpZHRoKCkKKyAgICAg
ICAgfHwgb2xkU3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkuaGVpZ2h0KCkgIT0gbmV3U3R5
bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkuaGVpZ2h0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIFJlbmRlckVsZW1lbnQ6OnN0
eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKQEAgLTE2OSw2ICsxNzgsMjYgQEAgdm9pZCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmlldygpLmZyYW1l
VmlldygpLnJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QodGhpcyk7CiAgICAgfQorICAg
IAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisgICAgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlID0gc3R5bGUoKTsKKyAgICBpZiAob2xkU3R5bGUgJiYgc2Nyb2xsU25hcENvbnRhaW5l
clJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRhdGUoKm9sZFN0eWxlLCBuZXdTdHlsZSkpIHsKKyAg
ICAgICAgaWYgKFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpIHsKKyAgICAgICAg
ICAgIHJlbmRlckxheWVyLT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgcmVuZGVy
TGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICB9IGVsc2UgaWYgKGlzQm9k
eSgpIHx8IGlzUm9vdCgpKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHZp
ZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy51cGRhdGVTbmFwT2Zmc2V0
cygpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+c2Nyb2xsU25hcENv
b3JkaW5hdGVzKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcENvb3JkaW5hdGVzKCkpIHsKKyAgICAg
ICAgaWYgKFJlbmRlckxheWVyKiBzY3JvbGxTbmFwTGF5ZXIgPSBlbmNsb3NpbmdCb3goKS5maW5k
RW5jbG9zaW5nU2Nyb2xsU25hcExheWVyKCkpIHsKKyAgICAgICAgICAgIHNjcm9sbFNuYXBMYXll
ci0+dXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICAgICAgICAgIHNjcm9sbFNuYXBMYXllci0+dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQwYjZkOWE1OTU5Y2ExNzU5ZGI3NDkzOTkyMzVj
YjdiMDI3ODRmYjMuLmEwOWMyYzVjMTVkMWUyMDFhYWMzOWM3YTk5MDdkNGJiZGViNTQyYmIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNy0wOCAgV2Vuc29uIEhzaWVoICA8d2hzaWVoQGJl
cmtlbGV5LmVkdT4KKworICAgICAgICBTbmFwIG9mZnNldHMgc2hvdWxkIHVwZGF0ZSB3aGVuIHN0
eWxlIGlzIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0
eWxlLWNoYW5nZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbDogQWRkZWQuCisKIDIwMTUtMDctMDgg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3Rz
L3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXtjYWNoZWQsZGVueS1kZWxl
dGUtZnJhbWUtaW4tbG9hZC1ldmVudH0uaHRtbCBjcmFzaCBvbiBXaW5kb3dzIERlYnVnIGJvdHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5
bGUtY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzRmNDky
ZmJjY2ZkOGE2OTNkOTA1ZDMzM2Y1OGE0YzNkNDRmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVGVzdGluZyByZXBlYXQoKSBnYWxsZXJ5Li4uCitPcmlnaW5hbCBz
bmFwIG9mZnNldHM6IGhvcml6b250YWwgPSB7IDAsIDUwMCwgMTAwMCwgMTUwMCwgMjAwMCwgMjUw
MCB9CitVcGRhdGVkIHBvaW50cy14IHRvIHJlcGVhdCgxMDAwcHgpOiBob3Jpem9udGFsID0geyAw
LCAxMDAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0ZWQgZGVzdGluYXRpb24gdG8gMjUwcHggMHB4OiBo
b3Jpem9udGFsID0geyAwLCA3NTAsIDE3NTAsIDI1MDAgfQorVXBkYXRlZCB0eXBlIHRvIG5vbmU6
CitUZXN0aW5nIGNvb3JkaW5hdGVzIGdhbGxlcnkuLi4KK09yaWdpbmFsIHNuYXAgb2Zmc2V0czog
aG9yaXpvbnRhbCA9IHsgMCwgNTAwLCAxMDAwLCAxNTAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0ZWQg
Y2hpbGQgY29vcmRpbmF0ZXMgdG8gMjUwcHggMHB4OiBob3Jpem9udGFsID0geyAwLCAyNTAsIDc1
MCwgMTI1MCwgMTc1MCwgMjI1MCwgMjUwMCB9CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YTNkOWQ4YjZiMTI3ZTQ2MjA1N2Y4NGNmZjBlMjY1MjI2NzkyMzMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2Vz
Lmh0bWwKQEAgLTAsMCArMSwxMjAgQEAKKzxodG1sPgorCisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA1MTVweDsKKyAgICAgICAgICAgICAgICB3aGl0
ZS1zcGFjZTogbm93cmFwOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlw
ZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5n
OiB0b3VjaDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBzY3JvbGw7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
Y29vcmRpbmF0ZXMtZ2FsbGVyeSB7CisgICAgICAgICAgICAgICAgdG9wOiA2MDBweDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI3JlcGVhdC1nYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy14OiByZXBlYXQoNTAwcHgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAuaG9yaXpvbnRhbCB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDUwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuc25h
cC1jb29yZCB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRl
OiAwJSAwJTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC5oY2hpbGQwMCB7IGJhY2tncm91bmQtY29sb3I6ICNERDAwMDA7
IH0KKyAgICAgICAgICAgIC5oY2hpbGQwMSB7IGJhY2tncm91bmQtY29sb3I6ICNGRjY2NjY7IH0K
KyAgICAgICAgICAgIC5oY2hpbGQwMiB7IGJhY2tncm91bmQtY29sb3I6ICMwMEREMDA7IH0KKyAg
ICAgICAgICAgIC5oY2hpbGQwMyB7IGJhY2tncm91bmQtY29sb3I6ICM2NkZGNjY7IH0KKyAgICAg
ICAgICAgIC5oY2hpbGQwNCB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwREQ7IH0KKyAgICAgICAg
ICAgIC5oY2hpbGQwNSB7IGJhY2tncm91bmQtY29sb3I6ICM2NjY2RkY7IH0KKworICAgICAgICAg
ICAgI2NoaWxkMDAgeyBsZWZ0OiAwcHg7IHRvcDogMDsgfQorICAgICAgICAgICAgI2NoaWxkMDEg
eyBsZWZ0OiA1MDBweDsgdG9wOiAwOyB9CisgICAgICAgICAgICAjY2hpbGQwMiB7IGxlZnQ6IDEw
MDBweDsgdG9wOiAwOyB9CisgICAgICAgICAgICAjY2hpbGQwMyB7IGxlZnQ6IDE1MDBweDsgdG9w
OiAwOyB9CisgICAgICAgICAgICAjY2hpbGQwNCB7IGxlZnQ6IDIwMDBweDsgdG9wOiAwOyB9Cisg
ICAgICAgICAgICAjY2hpbGQwNSB7IGxlZnQ6IDI1MDBweDsgdG9wOiAwOyB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBzZXR1cCgp
IHsKKyAgICAgICAgICAgIHZhciBzdHlsZVVwZGF0ZURlbGF5TVMgPSA1MDsKKyAgICAgICAgICAg
IHZhciByZXBlYXRHYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlcGVhdC1nYWxs
ZXJ5Iik7CisgICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNHYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvb3JkaW5hdGVzLWdhbGxlcnkiKTsKKyAgICAgICAgICAgIHZhciBjb29y
ZGluYXRlQ2hpbGRFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInNu
YXAtY29vcmQiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc25hcE9mZnNldHMoZWxlbWVudCkg
eworICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZz
ZXRzKGVsZW1lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUZXN0IHN0YXJ0
cyBoZXJlLiBFYWNoIGZ1bmN0aW9uIGNhbGwgdHJpZ2dlcnMgdGhlIG5leHQuCisgICAgICAgICAg
ICBmdW5jdGlvbiBkdW1wUmVwZWF0R2FsbGVyeVNuYXBPZmZzZXRzQW5kVXBkYXRlUG9pbnRzWCgp
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyByZXBlYXQoKSBnYWxsZXJ5Li4uIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIk9yaWdpbmFsIHNuYXAgb2Zmc2V0czogIiArIHNuYXBP
ZmZzZXRzKHJlcGVhdEdhbGxlcnkpKTsKKyAgICAgICAgICAgICAgICByZXBlYXRHYWxsZXJ5LnN0
eWxlLndlYmtpdFNjcm9sbFNuYXBQb2ludHNYID0gInJlcGVhdCgxMDAwcHgpIjsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGR1bXBSZXBlYXRHYWxsZXJ5U25hcE9mZnNldHNBbmRVcGRhdGVE
ZXN0aW5hdGlvbiwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0c0FuZFVwZGF0ZURlc3Rp
bmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVkIHBvaW50cy14IHRvIHJl
cGVhdCgxMDAwcHgpOiAiICsgc25hcE9mZnNldHMocmVwZWF0R2FsbGVyeSkpOworICAgICAgICAg
ICAgICAgIHJlcGVhdEdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25hcERlc3RpbmF0aW9uID0g
IjI1MHB4IDBweCI7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wUmVwZWF0R2FsbGVy
eVNuYXBPZmZzZXRzQW5kVXBkYXRlVHlwZSwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdhbGxlcnlTbmFwT2Zmc2V0
c0FuZFVwZGF0ZVR5cGUoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQgZGVzdGlu
YXRpb24gdG8gMjUwcHggMHB4OiAiICsgc25hcE9mZnNldHMocmVwZWF0R2FsbGVyeSkpOworICAg
ICAgICAgICAgICAgIHJlcGVhdEdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25hcFR5cGUgPSAi
bm9uZSI7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wUmVwZWF0R2FsbGVyeVNuYXBP
ZmZzZXRzQW5kVGVzdENvb3JkaW5hdGVzR2FsbGVyeSwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFJlcGVhdEdhbGxlcnlTbmFw
T2Zmc2V0c0FuZFRlc3RDb29yZGluYXRlc0dhbGxlcnkoKSB7CisgICAgICAgICAgICAgICAgZGVi
dWcoIlVwZGF0ZWQgdHlwZSB0byBub25lOiIgKyBzbmFwT2Zmc2V0cyhyZXBlYXRHYWxsZXJ5KSk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wQ29vcmRpbmF0ZXNHYWxsZXJ5QW5kVXBk
YXRlQ29vcmRpbmF0ZXMsIHN0eWxlVXBkYXRlRGVsYXlNUyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGR1bXBDb29yZGluYXRlc0dhbGxlcnlBbmRVcGRhdGVDb29yZGlu
YXRlcygpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBjb29yZGluYXRlcyBnYWxs
ZXJ5Li4uIik7CisgICAgICAgICAgICAgICAgZGVidWcoIk9yaWdpbmFsIHNuYXAgb2Zmc2V0czog
IiArIHNuYXBPZmZzZXRzKGNvb3JkaW5hdGVzR2FsbGVyeSkpOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb29yZGluYXRlQ2hpbGRFbGVtZW50cy5sZW5ndGg7
ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVDaGlsZEVsZW1lbnRzW2lu
ZGV4XS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwQ29vcmRpbmF0ZSA9ICIyNTBweCAwcHgiOworCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wQ29vcmRpbmF0ZXNHYWxsZXJ5QW5kRmluaXNo
VGVzdCwgc3R5bGVVcGRhdGVEZWxheU1TKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gZHVtcENvb3JkaW5hdGVzR2FsbGVyeUFuZEZpbmlzaFRlc3QoKSB7CisgICAgICAg
ICAgICAgICAgZGVidWcoIlVwZGF0ZWQgY2hpbGQgY29vcmRpbmF0ZXMgdG8gMjUwcHggMHB4OiAi
ICsgc25hcE9mZnNldHMoY29vcmRpbmF0ZXNHYWxsZXJ5KSk7CisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBSZXBlYXRHYWxs
ZXJ5U25hcE9mZnNldHNBbmRVcGRhdGVQb2ludHNYLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9
InNldHVwKCk7Ij4KKyAgICAgICAgPGRpdiBpZD0icmVwZWF0LWdhbGxlcnkiIGNsYXNzPSJnYWxs
ZXJ5Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDAiPjwvZGl2
PjxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDEiPjwvZGl2PjxkaXYgY2xhc3M9Imhvcml6
b250YWwgaGNoaWxkMDIiPjwvZGl2PjxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDMiPjwv
ZGl2PjxkaXYgY2xhc3M9Imhvcml6b250YWwgaGNoaWxkMDQiPjwvZGl2PjxkaXYgY2xhc3M9Imhv
cml6b250YWwgaGNoaWxkMDUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBp
ZD0iY29vcmRpbmF0ZXMtZ2FsbGVyeSIgY2xhc3M9ImdhbGxlcnkiPgorICAgICAgICAgICAgPGRp
diBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAwIiBpZD0iY2hpbGQwMCI+PC9k
aXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAxIiBpZD0iY2hpbGQw
MSI+PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAyIiBpZD0i
Y2hpbGQwMiI+PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhjaGlsZDAz
IiBpZD0iY2hpbGQwMyI+PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9udGFsIGhj
aGlsZDA0IiBpZD0iY2hpbGQwNCI+PC9kaXY+PGRpdiBjbGFzcz0ic25hcC1jb29yZCBob3Jpem9u
dGFsIGhjaGlsZDA1IiBpZD0iY2hpbGQwNSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256482</attachid>
            <date>2015-07-09 09:08:19 -0700</date>
            <delta_ts>2015-09-26 14:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150709090718.patch</filename>
            <type>text/plain</type>
            <size>19031</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU2MWY4YjgzYTQyNDA3
ZTBkMjFhYzgwNDRhYjFlOGY3NWI5ZWY1Ni4uMWE4Y2Q3MjNkMGYzMWY1ZmM4YjFjMmJiMjY1MjUz
NjY5OTM3MDBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA3LTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNuYXAgb2Zmc2V0
cyBzaG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYyNDExPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLmh0bWwKKyAgICAgICAgICAgICAgICBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWwKKworICAg
ICAgICBVcGRhdGluZyBzY3JvbGwgc25hcCBzdHlsZSBwcm9wZXJ0aWVzIG5vdyBwcm9ncmFtbWF0
aWNhbGx5IHVwZGF0ZXMgdGhlIHNjcm9sbCBzbmFwIGNvbnRhaW5lci4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOiBTZXRzIHNuYXAgb2Zm
c2V0cyB0byBhbiBlbXB0eSB2ZWN0b3Igd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNv
cmU6OnNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCk6IFNlZSBhYm92ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xh
eW91dFVwZGF0ZWQpOiBTZWUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOiBTZWUgYWJvdmUuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOiBBZGRlZCBtZXRob2QgdG8gZmlu
ZCB0aGUgY2xvc2VzdCBlbmNsb3Npbmcgc25hcCBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmZpbmRFbmNsb3NpbmdTY3JvbGxTbmFwQmxvY2spOiBTZWUgYWJvdmUuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDogU2VlIGFib3ZlLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDogQ2hlY2tzIGZvciBzdHlsZSBj
aGFuZ2VzIGFuZCB1cGRhdGVzIHNuYXAgb2Zmc2V0cyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAg
ICAoV2ViQ29yZTo6c2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRh
dGUpOiBTZWUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzdHlsZURpZENoYW5nZSk6IFNlZSBhYm92ZS4KKwogMjAxNS0wNy0wOCAgTWF0dGhldyBEYWl0
ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE1lZGlhU3RyZWFtIGNvbmZv
cm0gdG8gaXRzIHByaXZhdGUgY2xpZW50IGxpa2UgTWVkaWFTb3VyY2UgZG9lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCAyOWM2NmYxOTEwMzg3NzMxMjhhY2VjMGU5NThiZjk3YWNmODI5NDNk
Li4xZThmNWUyNDc4M2JmMDkzM2IwNzEwOGI5YjI4ZGVjYmM3MGI0ZjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtNjIsMTQgKzYyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlUHJvcGVydGllc0NoYW5nZWQoKQogICAgIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9s
bGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBu
b2RlLCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0cywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRV
bml0Piogc25hcE9mZnNldHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJ
WE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRv
IGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhl
cmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KICAgICBWZWN0b3I8
ZmxvYXQ+IHNuYXBPZmZzZXRzQXNGbG9hdDsKLSAgICBzbmFwT2Zmc2V0c0FzRmxvYXQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgb2Zm
c2V0IDogc25hcE9mZnNldHMpCi0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5hcHBlbmQocm91
bmRUb0RldmljZVBpeGVsKG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7Ci0KKyAg
ICBpZiAoc25hcE9mZnNldHMpIHsKKyAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc25hcE9mZnNldHMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYg
b2Zmc2V0IDogKnNuYXBPZmZzZXRzKQorICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LmFw
cGVuZChyb3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2Up
KTsKKyAgICB9CiAgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKQog
ICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQp
OwogICAgIGVsc2UKQEAgLTE0MSwxMSArMTQyLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNl
dHMoKTsKLSAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9m
ZnNldHMgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNldFN0
YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlz
OjpIb3Jpem9udGFsLCAqaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOwotCi0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxT
bmFwT2Zmc2V0cyA9IGZyYW1lVmlldy52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNl
dFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgKnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CisgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpu
b2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmlldy5ob3Jpem9udGFsU25h
cE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBzZXRTdGF0ZVNj
cm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwsIGZyYW1lVmlldy52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CiAKICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIG5v
ZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpKTsKQEAgLTQ4NSw4ICs0ODMsOCBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQgbm9kZQogICAgICAgICBub2RlLT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoc2Nyb2xs
aW5nR2VvbWV0cnktPnJlYWNoYWJsZUNvbnRlbnRTaXplKTsKICAgICAgICAgbm9kZS0+c2V0U2Ny
b2xsYWJsZUFyZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxhYmxlQXJlYVNpemUpOwog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9k
ZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBz
Y3JvbGxpbmdHZW9tZXRyeS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNj
YWxlRmFjdG9yKCkpOwotICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ0dlb21ldHJ5
LT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAg
ICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25h
cE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoc2Nyb2xsaW5nR2VvbWV0cnktPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDEz
MmNkZGUyNjVmZTYyMDg5ZDIzMDlkOTg3ZDc2MGZjY2E4YmYxNTMuLjFhOWNlNDZmM2YyNGQwN2E2
ZGIxMGE2OTUzOGIzMjU5MzFiNjBiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKQEAgLTE0OTAsNiArMTQ5MCwyNSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OmFkZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8sIENvbnRy
b2xTdAogewogICAgIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmFkZChvLCBzdGF0ZXMpOwog
fQorICAgIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisvLyBNYXkgcmV0dXJuIG51bGwg
aWYgdGhlcmUgaXMgbm8gc3VjaCBsYXllciAoZS5nLiBzZXR0aW5nIGEgbm9kZSB0byBoYXZlIHNj
cm9sbCBzbmFwIGNvb3JkaW5hdGVzCisvLyB3aGVuIHRoZXJlIG5vIHNjcm9sbCBzbmFwIGNvbnRh
aW5lciBleGlzdHMpLgorUmVuZGVyQmxvY2sqIFJlbmRlckVsZW1lbnQ6OmZpbmRFbmNsb3NpbmdT
Y3JvbGxTbmFwQmxvY2soKSBjb25zdAoreworICAgIFJlbmRlckJsb2NrKiBjdXJyZW50QmxvY2sg
PSBjb250YWluaW5nQmxvY2soKTsKKyAgICB3aGlsZSAoY3VycmVudEJsb2NrKSB7CisgICAgICAg
IGlmIChjdXJyZW50QmxvY2stPnN0eWxlKCkuc2Nyb2xsU25hcFR5cGUoKSAhPSBTY3JvbGxTbmFw
VHlwZTo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50QmxvY2s7CisgICAgICAgIAor
ICAgICAgICBpZiAoY3VycmVudEJsb2NrID09IGN1cnJlbnRCbG9jay0+Y29udGFpbmluZ0Jsb2Nr
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjdXJyZW50QmxvY2sgPSBjdXJyZW50
QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbmRpZgogCiBSZW5kZXJTdHlsZSogUmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5
bGUoUHNldWRvSWQgcHNldWRvLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA1ZjZjNzNiMmJiZDc0
YzYxYzQwN2UwOWY0NGIyMWRkNzU1ODkyZmEzLi4wOTE1MGM0N2ZjNzYyZTZjMjkyOGQ3OGYxYmU3
NjVlNWExYTFmMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgK
QEAgLTI1Miw2ICsyNTIsMTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUNv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMg
dm9pZCBhZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29u
dHJvbFN0YXRlcyopOwogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyAgICBSZW5kZXJC
bG9jayogZmluZEVuY2xvc2luZ1Njcm9sbFNuYXBCbG9jaygpIGNvbnN0OworI2VuZGlmCisgICAg
CiAgICAgdm9pZCBzZXRSZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrKGJvb2wgYikgeyBt
X3JlbmRlckJsb2NrSGFzTWFyZ2luQmVmb3JlUXVpcmsgPSBiOyB9CiAgICAgdm9pZCBzZXRSZW5k
ZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsoYm9vbCBiKSB7IG1fcmVuZGVyQmxvY2tIYXNNYXJn
aW5BZnRlclF1aXJrID0gYjsgfQogICAgIHZvaWQgc2V0UmVuZGVyQmxvY2tIYXNCb3JkZXJPclBh
ZGRpbmdMb2dpY2FsV2lkdGhDaGFuZ2VkKGJvb2wgYikgeyBtX3JlbmRlckJsb2NrSGFzQm9yZGVy
T3JQYWRkaW5nTG9naWNhbFdpZHRoQ2hhbmdlZCA9IGI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjNGQzMWViNGNj
MTIwYzEyOTdmZGJjZDEzNjFiMDMwMTUzNmEzOWViLi4xMGFkMzU3YjdjNjg3ZWIwZGZmY2ZjMDM0
MTgwMGFiNjZlY2MwZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0xMjQsNiArMTI0LDE1IEBAIHZvaWQgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTCiAgICAgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5l
d1N0eWxlKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCitzdGF0aWMgYm9vbCBz
Y3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVGb3JTdHlsZVVwZGF0ZShjb25zdCBSZW5k
ZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3sKKyAgICBy
ZXR1cm4gb2xkU3R5bGUuc2Nyb2xsU25hcFR5cGUoKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwVHlw
ZSgpIHx8IG9sZFN0eWxlLnNjcm9sbFNuYXBQb2ludHNYKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25h
cFBvaW50c1goKQorICAgICAgICB8fCBvbGRTdHlsZS5zY3JvbGxTbmFwUG9pbnRzWSgpICE9IG5l
d1N0eWxlLnNjcm9sbFNuYXBQb2ludHNZKCkgfHwgb2xkU3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0
aW9uKCkud2lkdGgoKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24oKS53aWR0aCgp
CisgICAgICAgIHx8IG9sZFN0eWxlLnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLmhlaWdodCgpICE9
IG5ld1N0eWxlLnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLmhlaWdodCgpOworfQorI2VuZGlmCisK
IHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBSZW5kZXJFbGVt
ZW50OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CkBAIC0xNjksNiArMTc4LDI3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZpZXco
KS5mcmFtZVZpZXcoKS5yZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KHRoaXMpOwogICAg
IH0KKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZSA9IHN0eWxlKCk7CisgICAgaWYgKG9sZFN0eWxlICYmIHNjcm9sbFNuYXBD
b250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKCpvbGRTdHlsZSwgbmV3U3R5bGUp
KSB7CisgICAgICAgIGlmIChSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBsYXllcigpKSB7Cisg
ICAgICAgICAgICByZW5kZXJMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICAgICAgICAg
IHJlbmRlckxheWVyLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAgfSBlbHNlIGlm
IChpc0JvZHkoKSB8fCBpc1Jvb3QoKSkgeworICAgICAgICAgICAgRnJhbWVWaWV3JiBmcmFtZVZp
ZXcgPSB2aWV3KCkuZnJhbWVWaWV3KCk7CisgICAgICAgICAgICBmcmFtZVZpZXcudXBkYXRlU25h
cE9mZnNldHMoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy51cGRhdGVTY3JvbGxTbmFwU3RhdGUo
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9s
bFNuYXBDb29yZGluYXRlcygpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBDb29yZGluYXRlcygpKSB7
CisgICAgICAgIFJlbmRlckJsb2NrKiBzY3JvbGxTbmFwQmxvY2sgPSBlbmNsb3NpbmdCb3goKS5m
aW5kRW5jbG9zaW5nU2Nyb2xsU25hcEJsb2NrKCk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwQmxv
Y2sgJiYgc2Nyb2xsU25hcEJsb2NrLT5sYXllcigpKSB7CisgICAgICAgICAgICBzY3JvbGxTbmFw
QmxvY2stPmxheWVyKCktPnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgICAgICAgICBzY3JvbGxT
bmFwQmxvY2stPmxheWVyKCktPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Yjg2ZWFj
ZWU0YWRkMjY3NzQ1NmQxMjVhYmFiZDU1MjQ3OTg1NjJmLi41NGYzNjEzODY4NGM0N2VkZjFmMDJm
MGI2MGQyM2ZiN2Q1ZjIyM2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDctMDkgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU25hcCBvZmZz
ZXRzIHNob3VsZCB1cGRhdGUgd2hlbiBzdHlsZSBpcyBwcm9ncmFtbWF0aWNhbGx5IGNoYW5nZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk2NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTgxNjI0MTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgc3R5bGUgdXBkYXRlcyBpbiBib3RoIGNh
c2VzIHdoZXJlIC1wb2ludHMgYW5kIC1jb29yZGluYXRlcyBhcmUgdXNlZCB0byBwb3NpdGlvbiBz
bmFwIHBvaW50cy4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5
bGUtY2hhbmdlZC1jb29yZGluYXRlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNo
YW5nZWQtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC5odG1sOiBBZGRlZC4KKwogMjAx
NS0wNy0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29udGVudCBFeHRlbnNpb25zXSBGdXNlIHVuZGlzdGluZ3Vpc2hhYmxlIGFjdGlvbnMgYXMg
bXVjaCBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29y
ZGluYXRlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVjMzk2OTYwMzM3YmIxY2M5Mjc2MGY5
NDZhNjBiNTI2NjAwYjI4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw5IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK09yaWdpbmFsIHNuYXAgb2Zmc2V0czogdmVydGljYWwgPSB7IDAsIDUwMCwg
MTAwMCwgMTUwMCwgMjAwMCwgMjUwMCB9CitVcGRhdGVkIGNoaWxkIGNvb3JkaW5hdGVzIHRvIDBw
eCAyNTBweDogdmVydGljYWwgPSB7IDAsIDI1MCwgNzUwLCAxMjUwLCAxNzUwLCAyMjUwLCAyNTAw
IH0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxl
LWNoYW5nZWQtY29vcmRpbmF0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1
ODE4YmNkNDVlNzFkMWZjZmFkODM5YzU2NmI2ZmJmZDhiYWU5OWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQt
Y29vcmRpbmF0ZXMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8aHRtbD4KKworICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjZ2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDUxNXB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAg
ICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICAg
ICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC52ZXJ0aWNhbCB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDUwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAg
ICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRlOiAwJSAwJTsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNj
aGlsZDAwIHsgYmFja2dyb3VuZC1jb2xvcjogI0REMDAwMDsgbGVmdDogMDsgdG9wOiAwcHg7IH0K
KyAgICAgICAgICAgICNjaGlsZDAxIHsgYmFja2dyb3VuZC1jb2xvcjogI0ZGNjY2NjsgbGVmdDog
MDsgdG9wOiA1MDBweDsgfQorICAgICAgICAgICAgI2NoaWxkMDIgeyBiYWNrZ3JvdW5kLWNvbG9y
OiAjMDBERDAwOyBsZWZ0OiAwOyB0b3A6IDEwMDBweDsgfQorICAgICAgICAgICAgI2NoaWxkMDMg
eyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2OyBsZWZ0OiAwOyB0b3A6IDE1MDBweDsgfQorICAg
ICAgICAgICAgI2NoaWxkMDQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEREOyBsZWZ0OiAwOyB0
b3A6IDIwMDBweDsgfQorICAgICAgICAgICAgI2NoaWxkMDUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
NjY2NkZGOyBsZWZ0OiAwOyB0b3A6IDI1MDBweDsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2V0dXAoKSB7CisgICAgICAgICAg
ICB2YXIgZ2FsbGVyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnYWxsZXJ5Iik7CisgICAg
ICAgICAgICB2YXIgY29vcmRpbmF0ZUNoaWxkRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJ2ZXJ0aWNhbCIpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzbmFwT2Zm
c2V0cygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmludGVybmFscy5zY3JvbGxT
bmFwT2Zmc2V0cyhnYWxsZXJ5KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZHVtcEdhbGxlcnlBbmRVcGRhdGVDb29yZGluYXRlcygpIHsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiT3JpZ2luYWwgc25hcCBvZmZzZXRzOiAiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvb3JkaW5hdGVDaGlsZEVsZW1l
bnRzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZUNoaWxk
RWxlbWVudHNbaW5kZXhdLnN0eWxlLndlYmtpdFNjcm9sbFNuYXBDb29yZGluYXRlID0gIjBweCAy
NTBweCI7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBHYWxsZXJ5QW5kRmluaXNo
VGVzdCwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBHYWxs
ZXJ5QW5kRmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCBjaGls
ZCBjb29yZGluYXRlcyB0byAwcHggMjUwcHg6ICIgKyBzbmFwT2Zmc2V0cygpKTsKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVt
cEdhbGxlcnlBbmRVcGRhdGVDb29yZGluYXRlcywgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJz
ZXR1cCgpIj4KKyAgICAgICAgPGRpdiBpZD0iZ2FsbGVyeSI+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDAiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0idmVydGljYWwiIGlkPSJjaGlsZDAxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
InZlcnRpY2FsIiBpZD0iY2hpbGQwMiI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2
ZXJ0aWNhbCIgaWQ9ImNoaWxkMDMiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVy
dGljYWwiIGlkPSJjaGlsZDA0Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRp
Y2FsIiBpZD0iY2hpbGQwNSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBlYXQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmY2Y2NjBiMDA5OGI1MzIzYWNkMmRhMjk5MDEyY2YwYmY5
MTk5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK09y
aWdpbmFsIHNuYXAgb2Zmc2V0czogdmVydGljYWwgPSB7IDAsIDUwMCwgMTAwMCwgMTUwMCwgMjAw
MCwgMjUwMCB9CitVcGRhdGVkIHBvaW50cy15IHRvIHJlcGVhdCgxMDAwcHgpOiB2ZXJ0aWNhbCA9
IHsgMCwgMTAwMCwgMjAwMCwgMjUwMCB9CitVcGRhdGVkIGRlc3RpbmF0aW9uIHRvIDBweCAyNTBw
eDogdmVydGljYWwgPSB7IDAsIDc1MCwgMTc1MCwgMjUwMCB9CitVcGRhdGVkIHR5cGUgdG8gbm9u
ZToKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxl
LWNoYW5nZWQtcmVwZWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVlYmYwNDNmZDgw
YzQxZjBmYzA0Yjc1NTM0ZWRjOWM0ZjQzZWUyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBlYXQuaHRt
bApAQCAtMCwwICsxLDgzIEBACis8aHRtbD4KKworICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAjZ2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDUxNXB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1z
Y3JvbGwtc25hcC10eXBlOiBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1vdmVy
Zmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNu
YXAtcG9pbnRzLXk6IHJlcGVhdCg1MDBweCk7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
c2Nyb2xsOworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLnZlcnRpY2FsIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA1MDBweDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgI2NoaWxkMDAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjREQwMDAwOyB9CisgICAgICAg
ICAgICAjY2hpbGQwMSB7IGJhY2tncm91bmQtY29sb3I6ICNGRjY2NjY7IH0KKyAgICAgICAgICAg
ICNjaGlsZDAyIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwREQwMDsgfQorICAgICAgICAgICAgI2No
aWxkMDMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2OyB9CisgICAgICAgICAgICAjY2hpbGQw
NCB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwREQ7IH0KKyAgICAgICAgICAgICNjaGlsZDA1IHsg
YmFja2dyb3VuZC1jb2xvcjogIzY2NjZGRjsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2V0dXAoKSB7CisgICAgICAgICAgICB2
YXIgZ2FsbGVyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnYWxsZXJ5Iik7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHNuYXBPZmZzZXRzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB3
aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZzZXRzKGdhbGxlcnkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUZXN0IHN0YXJ0cyBoZXJlLiBFYWNoIGZ1bmN0aW9uIGNhbGwg
dHJpZ2dlcnMgdGhlIG5leHQuCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wU25hcE9mZnNldHNB
bmRVcGRhdGVQb2ludHNZKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJPcmlnaW5hbCBzbmFw
IG9mZnNldHM6ICIgKyBzbmFwT2Zmc2V0cygpKTsKKyAgICAgICAgICAgICAgICBnYWxsZXJ5LnN0
eWxlLndlYmtpdFNjcm9sbFNuYXBQb2ludHNZID0gInJlcGVhdCgxMDAwcHgpIjsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGR1bXBTbmFwT2Zmc2V0c0FuZFVwZGF0ZURlc3RpbmF0aW9uLCAw
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFNuYXBPZmZzZXRz
QW5kVXBkYXRlRGVzdGluYXRpb24oKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQg
cG9pbnRzLXkgdG8gcmVwZWF0KDEwMDBweCk6ICIgKyBzbmFwT2Zmc2V0cygpKTsKKyAgICAgICAg
ICAgICAgICBnYWxsZXJ5LnN0eWxlLndlYmtpdFNjcm9sbFNuYXBEZXN0aW5hdGlvbiA9ICIwcHgg
MjUwcHgiOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFNuYXBPZmZzZXRzQW5kVXBk
YXRlVHlwZSwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBT
bmFwT2Zmc2V0c0FuZFVwZGF0ZVR5cGUoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0
ZWQgZGVzdGluYXRpb24gdG8gMHB4IDI1MHB4OiAiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAg
ICAgICAgICAgZ2FsbGVyeS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwVHlwZSA9ICJub25lIjsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBTbmFwT2Zmc2V0c0FuZEZpbmlzaFRlc3QsIDAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wU25hcE9mZnNldHNB
bmRGaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVkIHR5cGUgdG8g
bm9uZToiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBTbmFwT2Zmc2V0c0FuZFVwZGF0ZVBv
aW50c1ksIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic2V0dXAoKSI+CisgICAgICAgIDxkaXYg
aWQ9ImdhbGxlcnkiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGls
ZDAwIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQw
MSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDIi
PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDAzIj48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwNCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261979</attachid>
            <date>2015-09-26 14:26:33 -0700</date>
            <delta_ts>2015-09-26 14:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150926142612.patch</filename>
            <type>text/plain</type>
            <size>18171</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZlYjU5NTU3MDBhOTY2
MTk5ZDg4NzYwMGQ2NDg0ZTNmNmFlMDM4NS4uZjY2NTExMDU2NGRjYTkxN2RkMTBlMWU4ODdlZTJm
NzY1MGY2NGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNuYXAgb2Zmc2V0
cyBzaG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYyNDExPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLmh0bWwKKyAgICAgICAgICAgICAgICBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWwKKworICAg
ICAgICBVcGRhdGluZyBzY3JvbGwgc25hcCBzdHlsZSBwcm9wZXJ0aWVzIG5vdyBwcm9ncmFtbWF0
aWNhbGx5IHVwZGF0ZXMgdGhlIHNjcm9sbCBzbmFwIGNvbnRhaW5lci4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOiBTZXRzIHNuYXAgb2Zm
c2V0cyB0byBhbiBlbXB0eSB2ZWN0b3Igd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNv
cmU6OnNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCk6IFNlZSBhYm92ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xh
eW91dFVwZGF0ZWQpOiBTZWUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOiBTZWUgYWJvdmUuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOiBBZGRlZCBtZXRob2QgdG8gZmlu
ZCB0aGUgY2xvc2VzdCBlbmNsb3Npbmcgc25hcCBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmZpbmRFbmNsb3NpbmdTY3JvbGxTbmFwQmxvY2spOiBTZWUgYWJvdmUuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDogU2VlIGFib3ZlLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDogQ2hlY2tzIGZvciBzdHlsZSBj
aGFuZ2VzIGFuZCB1cGRhdGVzIHNuYXAgb2Zmc2V0cyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAg
ICAoV2ViQ29yZTo6c2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRh
dGUpOiBTZWUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzdHlsZURpZENoYW5nZSk6IFNlZSBhYm92ZS4KKwogMjAxNS0wOS0yNSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzc1JlZlB0cjw+IHRvIFJlZlB0cjw+
IGNvbnZlcnNpb24gaW4gbGVnYWN5IEluZGV4ZWREQiBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCAyOWM2NmYxOTEwMzg3NzMxMjhhY2VjMGU5NThiZjk3YWNmODI5NDNkLi4xZThmNWUy
NDc4M2JmMDkzM2IwNzEwOGI5YjI4ZGVjYmM3MGI0ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtNjIsMTQgKzYyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Ny
b2xsaW5nU3RhdGVUcmVlUHJvcGVydGllc0NoYW5nZWQoKQogICAgIHNjaGVkdWxlVHJlZVN0YXRl
Q29tbWl0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVT
bmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBTY3Jv
bGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3Jv
bGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYg
bm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0Piogc25h
cE9mZnNldHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1FOiBJbmNv
cnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRvIGRldmljZSBw
aXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxl
dCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KICAgICBWZWN0b3I8ZmxvYXQ+IHNu
YXBPZmZzZXRzQXNGbG9hdDsKLSAgICBzbmFwT2Zmc2V0c0FzRmxvYXQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgb2Zmc2V0IDogc25h
cE9mZnNldHMpCi0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5hcHBlbmQocm91bmRUb0Rldmlj
ZVBpeGVsKG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7Ci0KKyAgICBpZiAoc25h
cE9mZnNldHMpIHsKKyAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc25hcE9mZnNldHMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDog
KnNuYXBPZmZzZXRzKQorICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LmFwcGVuZChyb3Vu
ZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAgICB9
CiAgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKQogICAgICAgICBu
b2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwogICAgIGVs
c2UKQEAgLTE0MSwxMSArMTQyLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpm
cmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsKLSAg
ICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMgPSBm
cmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNldFN0YXRlU2Nyb2xs
aW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCAqaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkp
OwotCi0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zmc2V0
cyA9IGZyYW1lVmlldy52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNldFN0YXRlU2Ny
b2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0
aWNhbCwgKnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmlldy5ob3Jpem9udGFsU25hcE9mZnNldHMo
KSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBzZXRTdGF0ZVNjcm9sbGluZ05v
ZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGZy
YW1lVmlldy52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSk7CiAKICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGZyYW1l
Vmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIG5vZGUtPnNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCgpKTsKQEAgLTQ4NSw4ICs0ODMsOCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9k
ZQogICAgICAgICBub2RlLT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoc2Nyb2xsaW5nR2VvbWV0
cnktPnJlYWNoYWJsZUNvbnRlbnRTaXplKTsKICAgICAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFy
ZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxhYmxlQXJlYVNpemUpOwogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdH
ZW9tZXRyeS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOwotICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5v
ZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ0dlb21ldHJ5LT52ZXJ0aWNh
bFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRT
dGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25hcE9mZnNldHMs
IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwg
JnNjcm9sbGluZ0dlb21ldHJ5LT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNj
YWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xs
aW5nR2VvbWV0cnktPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggM2I5ZmQ5M2I2NGM0NzJh
OWQxYjM0OWYyZGUwMDUwODc0YmY4NjU3NC4uODU3ZmQyZDhkYWIxZDk3MmIzZjA3NzUxNTRmMGVm
OGFjODVlY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBA
IC0yNTMsNyArMjUzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBDb250cm9sU3RhdGVzKiBj
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCop
OwogICAgIHN0YXRpYyB2b2lkIGFkZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKik7Ci0KKyAgICAKICAgICB2b2lkIHNldFJlbmRlckJs
b2NrSGFzTWFyZ2luQmVmb3JlUXVpcmsoYm9vbCBiKSB7IG1fcmVuZGVyQmxvY2tIYXNNYXJnaW5C
ZWZvcmVRdWlyayA9IGI7IH0KICAgICB2b2lkIHNldFJlbmRlckJsb2NrSGFzTWFyZ2luQWZ0ZXJR
dWlyayhib29sIGIpIHsgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsgPSBiOyB9CiAg
ICAgdm9pZCBzZXRSZW5kZXJCbG9ja0hhc0JvcmRlck9yUGFkZGluZ0xvZ2ljYWxXaWR0aENoYW5n
ZWQoYm9vbCBiKSB7IG1fcmVuZGVyQmxvY2tIYXNCb3JkZXJPclBhZGRpbmdMb2dpY2FsV2lkdGhD
aGFuZ2VkID0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGM0ZDMxZWI0Y2MxMjBjMTI5N2ZkYmNkMTM2MWIwMzAx
NTM2YTM5ZWIuLjljNTU1YWExOTExNWFmYWJhZTEzN2YxYTk0NzEzOTZjZDBlNDlkOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKQEAgLTEyNCw2ICsxMjQsMTcgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHls
ZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclMKICAgICBSZW5k
ZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwogfQogCisjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKK3N0YXRpYyBib29sIHNjcm9sbFNuYXBDb250YWluZXJSZXF1
aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQoreworICAgIHJldHVybiBvbGRTdHlsZS5zY3JvbGxT
bmFwVHlwZSgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBUeXBlKCkKKyAgICAgICAgfHwgb2xkU3R5
bGUuc2Nyb2xsU25hcFBvaW50c1goKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwUG9pbnRzWCgpCisg
ICAgICAgIHx8IG9sZFN0eWxlLnNjcm9sbFNuYXBQb2ludHNZKCkgIT0gbmV3U3R5bGUuc2Nyb2xs
U25hcFBvaW50c1koKQorICAgICAgICB8fCBvbGRTdHlsZS5zY3JvbGxTbmFwRGVzdGluYXRpb24o
KS53aWR0aCgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBEZXN0aW5hdGlvbigpLndpZHRoKCkKKyAg
ICAgICAgfHwgb2xkU3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkuaGVpZ2h0KCkgIT0gbmV3
U3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkuaGVpZ2h0KCk7Cit9CisjZW5kaWYKKwogdm9p
ZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIFJlbmRlckVsZW1lbnQ6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKQEAgLTE2OSw2ICsxODAsMzMgQEAgdm9p
ZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmlldygpLmZy
YW1lVmlldygpLnJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QodGhpcyk7CiAgICAgfQor
ICAgIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisgICAgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlID0gc3R5bGUoKTsKKyAgICBpZiAob2xkU3R5bGUgJiYgc2Nyb2xsU25hcENvbnRh
aW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRhdGUoKm9sZFN0eWxlLCBuZXdTdHlsZSkpIHsK
KyAgICAgICAgaWYgKFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpIHsKKyAgICAg
ICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgcmVu
ZGVyTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICB9IGVsc2UgaWYgKGlz
Qm9keSgpIHx8IGlzUm9vdCgpKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9
IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy51cGRhdGVTbmFwT2Zm
c2V0cygpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOwor
ICAgICAgICAgICAgZnJhbWVWaWV3LnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSAh
PSBuZXdTdHlsZS5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSkgeworICAgICAgICBjb25zdCBSZW5k
ZXJCb3gqIHNjcm9sbFNuYXBCb3ggPSBlbmNsb3NpbmdCb3goKS5maW5kRW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lcigpOworICAgICAgICBpZiAoc2Nyb2xsU25hcEJveCAmJiBzY3JvbGxTbmFw
Qm94LT5sYXllcigpKSB7CisgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBz
Y3JvbGxTbmFwQm94LT5zdHlsZSgpOworICAgICAgICAgICAgaWYgKHN0eWxlLnNjcm9sbFNuYXBU
eXBlKCkgIT0gU2Nyb2xsU25hcFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxT
bmFwQm94LT5sYXllcigpLT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgICAgIHNj
cm9sbFNuYXBCb3gtPmxheWVyKCktPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICAg
ICAgICAgIGlmIChzY3JvbGxTbmFwQm94LT5pc0JvZHkoKSB8fCBzY3JvbGxTbmFwQm94LT5pc1Jv
b3QoKSkKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsU25hcEJveC0+dmlldygpLmZyYW1lVmll
dygpLnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisj
ZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2ZThkMzgzN2Q4YmM0
MDg0OGZiODU0NDhmYTEzZDM2NGUxYTRlNGEuLjk4NWQ5M2RmNDk5MmZiMmU3NmQ4NTA1NWY5Yzk4
MWM0MTg3Njc4ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNy0xNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwIG9mZnNldHMgc2hv
dWxkIHVwZGF0ZSB3aGVuIHN0eWxlIGlzIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTY0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xODE2MjQxMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBzdHlsZSB1cGRhdGVzIGluIGJvdGggY2FzZXMgd2hl
cmUgLXBvaW50cyBhbmQgLWNvb3JkaW5hdGVzIGFyZSB1c2VkIHRvIHBvc2l0aW9uIHNuYXAgcG9p
bnRzLgorCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFu
Z2VkLWNvb3JkaW5hdGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1y
ZXBlYXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTA5LTI1
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBtZWRpYS9t
ZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi11cGRhdGVzLmh0bWwgZmFpbGVkIGZvciBhbGwgTWFj
IHBsYXRmb3Jtcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtY29vcmRpbmF0
ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YzM5Njk2MDMzN2JiMWNjOTI3NjBmOTQ2YTYw
YjUyNjYwMGIyODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtY29vcmRpbmF0ZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOSBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitPcmlnaW5hbCBzbmFwIG9mZnNldHM6IHZlcnRpY2FsID0geyAwLCA1MDAsIDEwMDAs
IDE1MDAsIDIwMDAsIDI1MDAgfQorVXBkYXRlZCBjaGlsZCBjb29yZGluYXRlcyB0byAwcHggMjUw
cHg6IHZlcnRpY2FsID0geyAwLCAyNTAsIDc1MCwgMTI1MCwgMTc1MCwgMjI1MCwgMjUwMCB9CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFu
Z2VkLWNvb3JkaW5hdGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXN0eWxlLWNoYW5nZWQtY29vcmRpbmF0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTgxOGJj
ZDQ1ZTcxZDFmY2ZhZDgzOWM1NjZiNmZiZmQ4YmFlOTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLWNvb3Jk
aW5hdGVzLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPGh0bWw+CisKKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgI2dhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiA1MTVweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgICAgICAgICAg
IC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13
ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBzY3JvbGw7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAudmVydGljYWwgeworICAgICAgICAgICAgICAgIHdpZHRo
OiA1MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgICAgICAgICAg
IC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCUgMCU7CisgICAgICAgICAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY2hpbGQw
MCB7IGJhY2tncm91bmQtY29sb3I6ICNERDAwMDA7IGxlZnQ6IDA7IHRvcDogMHB4OyB9CisgICAg
ICAgICAgICAjY2hpbGQwMSB7IGJhY2tncm91bmQtY29sb3I6ICNGRjY2NjY7IGxlZnQ6IDA7IHRv
cDogNTAwcHg7IH0KKyAgICAgICAgICAgICNjaGlsZDAyIHsgYmFja2dyb3VuZC1jb2xvcjogIzAw
REQwMDsgbGVmdDogMDsgdG9wOiAxMDAwcHg7IH0KKyAgICAgICAgICAgICNjaGlsZDAzIHsgYmFj
a2dyb3VuZC1jb2xvcjogIzY2RkY2NjsgbGVmdDogMDsgdG9wOiAxNTAwcHg7IH0KKyAgICAgICAg
ICAgICNjaGlsZDA0IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBERDsgbGVmdDogMDsgdG9wOiAy
MDAwcHg7IH0KKyAgICAgICAgICAgICNjaGlsZDA1IHsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjZG
RjsgbGVmdDogMDsgdG9wOiAyNTAwcHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNldHVwKCkgeworICAgICAgICAgICAgdmFy
IGdhbGxlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ2FsbGVyeSIpOworICAgICAgICAg
ICAgdmFyIGNvb3JkaW5hdGVDaGlsZEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgidmVydGljYWwiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc25hcE9mZnNldHMo
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbnRlcm5hbHMuc2Nyb2xsU25hcE9m
ZnNldHMoZ2FsbGVyeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1
bXBHYWxsZXJ5QW5kVXBkYXRlQ29vcmRpbmF0ZXMoKSB7CisgICAgICAgICAgICAgICAgZGVidWco
Ik9yaWdpbmFsIHNuYXAgb2Zmc2V0czogIiArIHNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb29yZGluYXRlQ2hpbGRFbGVtZW50cy5s
ZW5ndGg7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVDaGlsZEVsZW1l
bnRzW2luZGV4XS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwQ29vcmRpbmF0ZSA9ICIwcHggMjUwcHgi
OworCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wR2FsbGVyeUFuZEZpbmlzaFRlc3Qs
IDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wR2FsbGVyeUFu
ZEZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZWQgY2hpbGQgY29v
cmRpbmF0ZXMgdG8gMHB4IDI1MHB4OiAiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBHYWxs
ZXJ5QW5kVXBkYXRlQ29vcmRpbmF0ZXMsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic2V0dXAo
KSI+CisgICAgICAgIDxkaXYgaWQ9ImdhbGxlcnkiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVydGljYWwiIGlkPSJjaGlsZDAwIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZl
cnRpY2FsIiBpZD0iY2hpbGQwMSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0
aWNhbCIgaWQ9ImNoaWxkMDIiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGlj
YWwiIGlkPSJjaGlsZDAzIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2Fs
IiBpZD0iY2hpbGQwNCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIg
aWQ9ImNoaWxkMDUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4K
KworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZmNmNjYwYjAwOThiNTMyM2FjZDJkYTI5OTAxMmNmMGJmOTE5OWQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitPcmlnaW5h
bCBzbmFwIG9mZnNldHM6IHZlcnRpY2FsID0geyAwLCA1MDAsIDEwMDAsIDE1MDAsIDIwMDAsIDI1
MDAgfQorVXBkYXRlZCBwb2ludHMteSB0byByZXBlYXQoMTAwMHB4KTogdmVydGljYWwgPSB7IDAs
IDEwMDAsIDIwMDAsIDI1MDAgfQorVXBkYXRlZCBkZXN0aW5hdGlvbiB0byAwcHggMjUwcHg6IHZl
cnRpY2FsID0geyAwLCA3NTAsIDE3NTAsIDI1MDAgfQorVXBkYXRlZCB0eXBlIHRvIG5vbmU6CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFu
Z2VkLXJlcGVhdC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlZWJmMDQzZmQ4MGM0MWYw
ZmMwNGI3NTUzNGVkYzljNGY0M2VlMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWwKQEAg
LTAsMCArMSw4MyBAQAorPGh0bWw+CisKKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgI2dhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiA1MTVweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xs
LXNuYXAtdHlwZTogbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ct
c2Nyb2xsaW5nOiB0b3VjaDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXBv
aW50cy15OiByZXBlYXQoNTAwcHgpOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9s
bDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC52ZXJ0aWNhbCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDUwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICNjaGlsZDAwIHsgYmFja2dyb3VuZC1jb2xvcjogI0REMDAwMDsgfQorICAgICAgICAgICAg
I2NoaWxkMDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkY2NjY2OyB9CisgICAgICAgICAgICAjY2hp
bGQwMiB7IGJhY2tncm91bmQtY29sb3I6ICMwMEREMDA7IH0KKyAgICAgICAgICAgICNjaGlsZDAz
IHsgYmFja2dyb3VuZC1jb2xvcjogIzY2RkY2NjsgfQorICAgICAgICAgICAgI2NoaWxkMDQgeyBi
YWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEREOyB9CisgICAgICAgICAgICAjY2hpbGQwNSB7IGJhY2tn
cm91bmQtY29sb3I6ICM2NjY2RkY7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNldHVwKCkgeworICAgICAgICAgICAgdmFyIGdh
bGxlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ2FsbGVyeSIpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBzbmFwT2Zmc2V0cygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93
LmludGVybmFscy5zY3JvbGxTbmFwT2Zmc2V0cyhnYWxsZXJ5KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGVzdCBzdGFydHMgaGVyZS4gRWFjaCBmdW5jdGlvbiBjYWxsIHRyaWdn
ZXJzIHRoZSBuZXh0LgorICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFNuYXBPZmZzZXRzQW5kVXBk
YXRlUG9pbnRzWSgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiT3JpZ2luYWwgc25hcCBvZmZz
ZXRzOiAiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAgICAgICAgICAgZ2FsbGVyeS5zdHlsZS53
ZWJraXRTY3JvbGxTbmFwUG9pbnRzWSA9ICJyZXBlYXQoMTAwMHB4KSI7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChkdW1wU25hcE9mZnNldHNBbmRVcGRhdGVEZXN0aW5hdGlvbiwgMCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBTbmFwT2Zmc2V0c0FuZFVw
ZGF0ZURlc3RpbmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVkIHBvaW50
cy15IHRvIHJlcGVhdCgxMDAwcHgpOiAiICsgc25hcE9mZnNldHMoKSk7CisgICAgICAgICAgICAg
ICAgZ2FsbGVyeS5zdHlsZS53ZWJraXRTY3JvbGxTbmFwRGVzdGluYXRpb24gPSAiMHB4IDI1MHB4
IjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGR1bXBTbmFwT2Zmc2V0c0FuZFVwZGF0ZVR5
cGUsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wU25hcE9m
ZnNldHNBbmRVcGRhdGVUeXBlKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJVcGRhdGVkIGRl
c3RpbmF0aW9uIHRvIDBweCAyNTBweDogIiArIHNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAg
ICAgIGdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25hcFR5cGUgPSAibm9uZSI7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChkdW1wU25hcE9mZnNldHNBbmRGaW5pc2hUZXN0LCAwKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFNuYXBPZmZzZXRzQW5kRmlu
aXNoVGVzdCgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCB0eXBlIHRvIG5vbmU6
IiArIHNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChkdW1wU25hcE9mZnNldHNBbmRVcGRhdGVQb2ludHNZ
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InNldHVwKCkiPgorICAgICAgICA8ZGl2IGlkPSJn
YWxsZXJ5Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwMCI+
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDEiPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDAyIj48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwMyI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDQiPjwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDA1Ij48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261988</attachid>
            <date>2015-09-27 09:19:01 -0700</date>
            <delta_ts>2015-09-28 15:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135964-20150927091839.patch</filename>
            <type>text/plain</type>
            <size>23275</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZlYjU5NTU3MDBhOTY2
MTk5ZDg4NzYwMGQ2NDg0ZTNmNmFlMDM4NS4uNWUzNDAzOTM4MjM5NDA1ZjNkNTVlNjkwYjczZjll
Mzk4ZDQ2NjNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA5LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNuYXAgb2Zmc2V0
cyBzaG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5NjQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYyNDExPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLmh0bWwKKyAgICAgICAgICAgICAgICBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0Lmh0bWwKKworICAg
ICAgICBVcGRhdGluZyBzY3JvbGwgc25hcCBzdHlsZSBwcm9wZXJ0aWVzIG5vdyBwcm9ncmFtbWF0
aWNhbGx5IHVwZGF0ZXMgdGhlIHNjcm9sbCBzbmFwIGNvbnRhaW5lci4gRG9lcyBub3QgeWV0Cisg
ICAgICAgIGhhbmRsZSB0aGUgY2FzZSBvZiByZXBhcmVudGVkIGVsZW1lbnRzIHdpdGggc2Nyb2xs
IHNuYXAgY29vcmRpbmF0ZXMuIEFkZHMgc29tZSBwbHVtYmluZyB0aGUgRnJhbWVWaWV3IGFuZAor
ICAgICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IgdG8gaW1tZWRpYXRlbHkgdXBkYXRlIHRoZSBz
Y3JvbGxpbmcgY29vcmRpbmF0b3Igd2hlbiB1cGRhdGluZyB0aGUgRnJhbWVWaWV3IGR1ZSB0bwor
ICAgICAgICBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNj
cm9sbFNuYXBQcm9wZXJ0aWVzKTogQ2FsbHMgb24gdGhlIGNvbXBvc2l0b3IgdG8gcmV1cGRhdGUg
c2Nyb2xsIHNuYXAKKyAgICAgICAgICAgIHByb3BlcnRpZXMgb24gdGhlIEZyYW1lVmlldy4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOiBTZXRzIHNuYXAgb2Zmc2V0cyB0byBhbiBlbXB0eSB2
ZWN0b3Igd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFN0YXRlU2Nyb2xs
aW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcpOiBV
cGRhdGVzIHNjcm9sbCBzbmFwIHByb3BlcnRpZXMKKyAgICAgICAgICAgIGZyb20gYSBnaXZlbiBG
cmFtZVZpZXcuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25h
cFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KTogVXBkYXRlcyB0aGUg
c2Nyb2xsaW5nIGNvb3JkaW5hdG9yJ3MKKyAgICAgICAgICAgIHNjcm9sbCBzbmFwIHByb3BlcnRp
ZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOiBQbHVtYiBz
Y3JvbGwgc25hcCBwcm9wZXJ0eSB1cGRhdGluZyB0byB0aGUgRnJhbWVWaWV3LgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDogQ2hlY2tzIGZvciBzdHlsZSBj
aGFuZ2VzIGFuZCB1cGRhdGVzIHNuYXAgb2Zmc2V0cyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAg
ICAoV2ViQ29yZTo6c2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRh
dGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0
eWxlRGlkQ2hhbmdlKTogRGl0dG8uCisKIDIwMTUtMDktMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3NSZWZQdHI8PiB0byBSZWZQdHI8PiBjb252ZXJz
aW9uIGluIGxlZ2FjeSBJbmRleGVkREIgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA0OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0MzgwYjM3Li4yMTVjMmVmZjRm
Mzc1MWQwYzM4ZmRiODRlYTEyZWRkZWExMWIwYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xMDA3LDYgKzEwMDcsMTEgQEAgYm9vbCBGcmFtZVZpZXc6OmlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSBjb25zdAogICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KKwordm9pZCBGcmFt
ZVZpZXc6OnVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKSBj
b25zdAoreworICAgIHJlbmRlclZpZXcoKS0+Y29tcG9zaXRvcigpLnVwZGF0ZVNjcm9sbFNuYXBQ
cm9wZXJ0aWVzV2l0aEZyYW1lVmlldygqdGhpcyk7Cit9CiAjZW5kaWYKIAogYm9vbCBGcmFtZVZp
ZXc6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZy
YW1lRm9yRmx1c2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBjZTg5NmJhNjI2ZDlhMWNk
ZjQ0ZGQwODdlOWQ4NzM2ZTVjZmYyMWZjLi42MTRhYzFiNTFlN2IzOWIwNTMxNTlkZjFhMGVjYzRi
ZjNjZTY3ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU0NCw2ICs1NDQsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHVwZGF0ZVNuYXBP
ZmZzZXRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNu
YXBQcm9wZXJ0aWVzKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgZmxvYXQgYWRqdXN0
U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRl
eCAyOWM2NmYxOTEwMzg3NzMxMjhhY2VjMGU5NThiZjk3YWNmODI5NDNkLi4yM2MyNDYzMTkyOTVh
ZmI0MmE3YTczODk0Nzk1N2I1OTdiN2FlYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAt
NjIsMTQgKzYyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5n
U3RhdGVUcmVlUHJvcGVydGllc0NoYW5nZWQoKQogICAgIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0
KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zm
c2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBTY3JvbGxFdmVu
dEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0Piogc25hcE9mZnNl
dHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0
ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4g
UGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBw
cm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KICAgICBWZWN0b3I8ZmxvYXQ+IHNuYXBPZmZz
ZXRzQXNGbG9hdDsKLSAgICBzbmFwT2Zmc2V0c0FzRmxvYXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgb2Zmc2V0IDogc25hcE9mZnNl
dHMpCi0gICAgICAgIHNuYXBPZmZzZXRzQXNGbG9hdC5hcHBlbmQocm91bmRUb0RldmljZVBpeGVs
KG9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSk7Ci0KKyAgICBpZiAoc25hcE9mZnNl
dHMpIHsKKyAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c25hcE9mZnNldHMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogKnNuYXBP
ZmZzZXRzKQorICAgICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChy
b3VuZFRvRGV2aWNlUGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKKyAg
ICB9CiAgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKQogICAgICAg
ICBub2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwogICAg
IGVsc2UKQEAgLTE0MSwxNCArMTQyLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsK
LSAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMg
PSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNldFN0YXRlU2Ny
b2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCAqaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOwotCi0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zm
c2V0cyA9IGZyYW1lVmlldy52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCwgKnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSk7Ci0KLSAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGZyYW1l
Vmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwotICAgIG5vZGUtPnNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCgpKTsKKyAgICB1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZp
ZXcoZnJhbWVWaWV3KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00ODUsOCAr
NDc5LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGUKICAgICAgICAgbm9kZS0+c2V0UmVhY2hh
YmxlQ29udGVudHNTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5yZWFjaGFibGVDb250ZW50U2l6ZSk7
CiAgICAgICAgIG5vZGUtPnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+
c2Nyb2xsYWJsZUFyZWFTaXplKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAg
ICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zm
c2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3Jv
bGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCBzY3JvbGxpbmdHZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNl
dHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICZzY3JvbGxpbmdH
ZW9tZXRyeS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5v
ZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsICZzY3JvbGxpbmdHZW9tZXRyeS0+dmVydGlj
YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbm9k
ZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxpbmdHZW9tZXRyeS0+
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKQEAgLTYyMSw2ICs2MTUsMTYgQEAgYm9vbCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLT5pc1Njcm9sbFNuYXBJblByb2dyZXNzKCk7CiB9
CisKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3Bl
cnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KQoreworICAgIGlm
IChTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVO
b2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpKSB7CisgICAgICAgIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsLCBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgZnJhbWVWaWV3LnZl
cnRpY2FsU25hcE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAg
ICAgbm9kZS0+c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChmcmFtZVZpZXcuY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKKyAgICAgICAgbm9kZS0+c2V0Q3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCkpOworICAgIH0KK30KICNlbmRpZgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oCmluZGV4IDhlNDI3YjljNzVkNGUxMDI2YWY3ZDFkYWQ1YjA0ZDEw
MmQxNGUxNjcuLmRiOTMzZDI4ZmFkMjZkMDhiOWY1ZDJhMWUxMjUyMThjZWJiNTBmOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKQEAgLTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVh
c29uKSBjb25zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmll
dyhjb25zdCBGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CmluZGV4IDQ0NmI4Y2NiOTVhYTgxZDEzZjU2MTYxOTdlNDYxYzZiYzA1YmNiYjkuLjEzMTBjYjRl
ZjNhYjExNzRiYWRlYzAwNjdjNGI0YWI4MmVmYmIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTc5LDYgKzE3
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsU25hcEluUHJv
Z3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
Y3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVo
YXZpb3IpIHsgfQogCiAgICAgLy8gR2VuZXJhdGVkIGEgdW5pcXVlIGlkIGZvciBzY3JvbGwgbGF5
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCA2ZjQ1ZTk2Nzg1ZWZjM2JmMDE5NjM2NmNmZDBhMmY3NmZmYzBmZmNiLi42
ZDdkMWI1YzQ2OTkyODcxOTY1ZmRhMjQzNzI0OWVhNzA0NzQwNjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNDI2NCw0
ICs0MjY0LDEyIEBAIHVuc2lnbmVkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcG9zaXRpbmdV
cGRhdGVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudDsK
IH0KIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCit2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1l
VmlldyYgZnJhbWVWaWV3KQoreworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQorICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVW
aWV3KGZyYW1lVmlldyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDhmM2MwYTIzOTBmMTcwMzY3NjMxZDQxMDQ5ZDM3MDk4NmVmY2Q3MjIuLjM0NWNmZmU0YWRkODJm
NzJiNmExZjVjZTMwMTA5NDY2MWVhYmMzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTMxMyw2ICszMTMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Um9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7
CiAgICAgQ29sb3Igcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7IH0KIAorI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCisgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXco
Y29uc3QgRnJhbWVWaWV3Jik7CisjZW5kaWYKKwogICAgIC8vIEZvciB0ZXN0aW5nLgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIGxheWVyRmx1c2hDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGM0
ZDMxZWI0Y2MxMjBjMTI5N2ZkYmNkMTM2MWIwMzAxNTM2YTM5ZWIuLjI4YmE1OGNlNjMwOGYxYjZl
MmExYTBjYjVkZWU3NTQ0NDViZTVhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI0LDYgKzEyNSwxNiBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyUwogICAgIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShkaWZm
LCBuZXdTdHlsZSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorc3RhdGljIGJv
b2wgc2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRhdGUoY29uc3Qg
UmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit7Cisg
ICAgcmV0dXJuICEob2xkU3R5bGUuc2Nyb2xsU25hcFR5cGUoKSA9PSBuZXdTdHlsZS5zY3JvbGxT
bmFwVHlwZSgpCisgICAgICAgICYmIG9sZFN0eWxlLnNjcm9sbFNuYXBQb2ludHNYKCkgPT0gbmV3
U3R5bGUuc2Nyb2xsU25hcFBvaW50c1goKQorICAgICAgICAmJiBvbGRTdHlsZS5zY3JvbGxTbmFw
UG9pbnRzWSgpID09IG5ld1N0eWxlLnNjcm9sbFNuYXBQb2ludHNZKCkKKyAgICAgICAgJiYgb2xk
U3R5bGUuc2Nyb2xsU25hcERlc3RpbmF0aW9uKCkgPT0gbmV3U3R5bGUuc2Nyb2xsU25hcERlc3Rp
bmF0aW9uKCkpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkKIHsKICAgICBSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHls
ZSk7CkBAIC0xNjksNiArMTgwLDMzIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0KHRoaXMpOwogICAgIH0KKworI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlID0gc3R5bGUoKTsKKyAgICBpZiAob2xk
U3R5bGUgJiYgc2Nyb2xsU25hcENvbnRhaW5lclJlcXVpcmVzVXBkYXRlRm9yU3R5bGVVcGRhdGUo
Km9sZFN0eWxlLCBuZXdTdHlsZSkpIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiByZW5kZXJM
YXllciA9IGxheWVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVTbmFwT2Zm
c2V0cygpOworICAgICAgICAgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgp
OworICAgICAgICB9IGVsc2UgaWYgKGlzQm9keSgpIHx8IGlzUm9vdCgpKSB7CisgICAgICAgICAg
ICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAg
IGZyYW1lVmlldy51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVw
ZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBDb29yZGluYXRlcygpICE9
IG5ld1N0eWxlLnNjcm9sbFNuYXBDb29yZGluYXRlcygpKSB7CisgICAgICAgIGNvbnN0IFJlbmRl
ckJveCogc2Nyb2xsU25hcEJveCA9IGVuY2xvc2luZ0JveCgpLmZpbmRFbmNsb3NpbmdTY3JvbGxh
YmxlQ29udGFpbmVyKCk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwQm94ICYmIHNjcm9sbFNuYXBC
b3gtPmxheWVyKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHNj
cm9sbFNuYXBCb3gtPnN0eWxlKCk7CisgICAgICAgICAgICBpZiAoc3R5bGUuc2Nyb2xsU25hcFR5
cGUoKSAhPSBTY3JvbGxTbmFwVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgICAgIHNjcm9sbFNu
YXBCb3gtPmxheWVyKCktPnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgICAgICAgICAgICAgc2Ny
b2xsU25hcEJveC0+bGF5ZXIoKS0+dXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKHNjcm9sbFNuYXBCb3gtPmlzQm9keSgpIHx8IHNjcm9sbFNuYXBCb3gtPmlzUm9v
dCgpKQorICAgICAgICAgICAgICAgICAgICBzY3JvbGxTbmFwQm94LT52aWV3KCkuZnJhbWVWaWV3
KCkudXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGllcygpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkNmU4ZDM4MzdkOGJjNDA4NDhmYjg1NDQ4ZmExM2QzNjRlMWE0ZTRh
Li4yYWVjZGQ3YzRiOTZkZjgwZWQ1ZDYwYzJlYTU3ZmM4ZGYzYjhkYjVhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTUtMDktMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgU25hcCBvZmZzZXRzIHNob3VsZCB1cGRhdGUgd2hlbiBzdHlsZSBpcyBw
cm9ncmFtbWF0aWNhbGx5IGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTk2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTgxNjI0MTE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMg
c3R5bGUgdXBkYXRlcyBpbiBib3RoIGNhc2VzIHdoZXJlIC1wb2ludHMgYW5kIC1jb29yZGluYXRl
cyBhcmUgdXNlZCB0byBwb3NpdGlvbiBzbmFwIHBvaW50cy4KKworICAgICAgICAqIGNzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUt
Y2hhbmdlZC1jb29yZGluYXRlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtcmVwZWF0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLXJl
cGVhdC5odG1sOiBBZGRlZC4KKwogMjAxNS0wOS0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIE1hcmsgbWVkaWEvbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24t
dXBkYXRlcy5odG1sIGZhaWxlZCBmb3IgYWxsIE1hYyBwbGF0Zm9ybXMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0eWxlLWNoYW5nZWQtY29v
cmRpbmF0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1zdHlsZS1jaGFuZ2VkLWNvb3JkaW5hdGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NWMzOTY5NjAzMzdiYjFjYzkyNzYwZjk0NmE2MGI1MjY2MDBiMjg1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFu
Z2VkLWNvb3JkaW5hdGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorT3JpZ2luYWwgc25hcCBvZmZz
ZXRzOiB2ZXJ0aWNhbCA9IHsgMCwgNTAwLCAxMDAwLCAxNTAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0
ZWQgY2hpbGQgY29vcmRpbmF0ZXMgdG8gMHB4IDI1MHB4OiB2ZXJ0aWNhbCA9IHsgMCwgMjUwLCA3
NTAsIDEyNTAsIDE3NTAsIDIyNTAsIDI1MDAgfQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdHlsZS1jaGFuZ2VkLWNvb3Jk
aW5hdGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MThiY2Q0NWU3MWQxZmNmYWQ4MzljNTY2YjZmYmZk
OGJhZTk5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1jb29yZGluYXRlcy5odG1sCkBAIC0wLDAgKzEsNzQg
QEAKKzxodG1sPgorCisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNn
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTE1cHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiA1MDBweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6
IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzog
dG91Y2g7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnZl
cnRpY2FsIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNTAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiA1MDBweDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3Jk
aW5hdGU6IDAlIDAlOworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI2NoaWxkMDAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjREQw
MDAwOyBsZWZ0OiAwOyB0b3A6IDBweDsgfQorICAgICAgICAgICAgI2NoaWxkMDEgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiAjRkY2NjY2OyBsZWZ0OiAwOyB0b3A6IDUwMHB4OyB9CisgICAgICAgICAgICAj
Y2hpbGQwMiB7IGJhY2tncm91bmQtY29sb3I6ICMwMEREMDA7IGxlZnQ6IDA7IHRvcDogMTAwMHB4
OyB9CisgICAgICAgICAgICAjY2hpbGQwMyB7IGJhY2tncm91bmQtY29sb3I6ICM2NkZGNjY7IGxl
ZnQ6IDA7IHRvcDogMTUwMHB4OyB9CisgICAgICAgICAgICAjY2hpbGQwNCB7IGJhY2tncm91bmQt
Y29sb3I6ICMwMDAwREQ7IGxlZnQ6IDA7IHRvcDogMjAwMHB4OyB9CisgICAgICAgICAgICAjY2hp
bGQwNSB7IGJhY2tncm91bmQtY29sb3I6ICM2NjY2RkY7IGxlZnQ6IDA7IHRvcDogMjUwMHB4OyB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5j
dGlvbiBzZXR1cCgpIHsKKyAgICAgICAgICAgIHZhciBnYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImdhbGxlcnkiKTsKKyAgICAgICAgICAgIHZhciBjb29yZGluYXRlQ2hpbGRFbGVt
ZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInZlcnRpY2FsIik7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHNuYXBPZmZzZXRzKCkgeworICAgICAgICAgICAgICAgIHJldHVy
biB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbFNuYXBPZmZzZXRzKGdhbGxlcnkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wR2FsbGVyeUFuZFVwZGF0ZUNvb3JkaW5h
dGVzKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJPcmlnaW5hbCBzbmFwIG9mZnNldHM6ICIg
KyBzbmFwT2Zmc2V0cygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGlu
ZGV4IDwgY29vcmRpbmF0ZUNoaWxkRWxlbWVudHMubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAg
ICAgICAgICAgICBjb29yZGluYXRlQ2hpbGRFbGVtZW50c1tpbmRleF0uc3R5bGUud2Via2l0U2Ny
b2xsU25hcENvb3JkaW5hdGUgPSAiMHB4IDI1MHB4IjsKKworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZHVtcEdhbGxlcnlBbmRGaW5pc2hUZXN0LCAwKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gZHVtcEdhbGxlcnlBbmRGaW5pc2hUZXN0KCkgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJVcGRhdGVkIGNoaWxkIGNvb3JkaW5hdGVzIHRvIDBweCAyNTBweDogIiAr
IHNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChkdW1wR2FsbGVyeUFuZFVwZGF0ZUNvb3JkaW5hdGVzLCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InNldHVwKCkiPgorICAgICAgICA8ZGl2IGlkPSJnYWxs
ZXJ5Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwMCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDEiPjwvZGl2
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDAyIj48L2Rpdj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwMyI+PC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDQiPjwvZGl2PgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDA1Ij48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBl
YXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZjZjY2MGIw
MDk4YjUzMjNhY2QyZGEyOTkwMTJjZjBiZjkxOTlkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBlYXQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorT3JpZ2luYWwgc25hcCBvZmZzZXRzOiB2ZXJ0aWNhbCA9
IHsgMCwgNTAwLCAxMDAwLCAxNTAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0ZWQgcG9pbnRzLXkgdG8g
cmVwZWF0KDEwMDBweCk6IHZlcnRpY2FsID0geyAwLCAxMDAwLCAyMDAwLCAyNTAwIH0KK1VwZGF0
ZWQgZGVzdGluYXRpb24gdG8gMHB4IDI1MHB4OiB2ZXJ0aWNhbCA9IHsgMCwgNzUwLCAxNzUwLCAy
NTAwIH0KK1VwZGF0ZWQgdHlwZSB0byBub25lOgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBlYXQuaHRtbCBiL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3R5bGUtY2hhbmdlZC1yZXBlYXQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWViZjA0M2ZkODBjNDFmMGZjMDRiNzU1MzRlZGM5YzRmNDNlZTI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1zdHlsZS1jaGFuZ2VkLXJlcGVhdC5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorCisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNnYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogNTE1cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA1MDBweDsK
KyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IG1hbmRhdG9yeTsKKyAg
ICAgICAgICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CisgICAgICAg
ICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1wb2ludHMteTogcmVwZWF0KDUwMHB4KTsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgICAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAudmVydGljYWwgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiA1MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUw
MHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY2hpbGQwMCB7IGJhY2tncm91bmQt
Y29sb3I6ICNERDAwMDA7IH0KKyAgICAgICAgICAgICNjaGlsZDAxIHsgYmFja2dyb3VuZC1jb2xv
cjogI0ZGNjY2NjsgfQorICAgICAgICAgICAgI2NoaWxkMDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
MDBERDAwOyB9CisgICAgICAgICAgICAjY2hpbGQwMyB7IGJhY2tncm91bmQtY29sb3I6ICM2NkZG
NjY7IH0KKyAgICAgICAgICAgICNjaGlsZDA0IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBERDsg
fQorICAgICAgICAgICAgI2NoaWxkMDUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NkZGOyB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biBzZXR1cCgpIHsKKyAgICAgICAgICAgIHZhciBnYWxsZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImdhbGxlcnkiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc25hcE9mZnNldHMoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNl
dHMoZ2FsbGVyeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc3RhcnRz
IGhlcmUuIEVhY2ggZnVuY3Rpb24gY2FsbCB0cmlnZ2VycyB0aGUgbmV4dC4KKyAgICAgICAgICAg
IGZ1bmN0aW9uIGR1bXBTbmFwT2Zmc2V0c0FuZFVwZGF0ZVBvaW50c1koKSB7CisgICAgICAgICAg
ICAgICAgZGVidWcoIk9yaWdpbmFsIHNuYXAgb2Zmc2V0czogIiArIHNuYXBPZmZzZXRzKCkpOwor
ICAgICAgICAgICAgICAgIGdhbGxlcnkuc3R5bGUud2Via2l0U2Nyb2xsU25hcFBvaW50c1kgPSAi
cmVwZWF0KDEwMDBweCkiOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFNuYXBPZmZz
ZXRzQW5kVXBkYXRlRGVzdGluYXRpb24sIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBkdW1wU25hcE9mZnNldHNBbmRVcGRhdGVEZXN0aW5hdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCBwb2ludHMteSB0byByZXBlYXQoMTAwMHB4KTogIiAr
IHNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAgICAgIGdhbGxlcnkuc3R5bGUud2Via2l0U2Ny
b2xsU25hcERlc3RpbmF0aW9uID0gIjBweCAyNTBweCI7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChkdW1wU25hcE9mZnNldHNBbmRVcGRhdGVUeXBlLCAwKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZHVtcFNuYXBPZmZzZXRzQW5kVXBkYXRlVHlwZSgpIHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiVXBkYXRlZCBkZXN0aW5hdGlvbiB0byAwcHggMjUwcHg6ICIg
KyBzbmFwT2Zmc2V0cygpKTsKKyAgICAgICAgICAgICAgICBnYWxsZXJ5LnN0eWxlLndlYmtpdFNj
cm9sbFNuYXBUeXBlID0gIm5vbmUiOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZHVtcFNu
YXBPZmZzZXRzQW5kRmluaXNoVGVzdCwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGR1bXBTbmFwT2Zmc2V0c0FuZEZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICAg
ICAgZGVidWcoIlVwZGF0ZWQgdHlwZSB0byBub25lOiIgKyBzbmFwT2Zmc2V0cygpKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZHVtcFNuYXBPZmZzZXRzQW5kVXBkYXRlUG9pbnRzWSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2Fk
PSJzZXR1cCgpIj4KKyAgICAgICAgPGRpdiBpZD0iZ2FsbGVyeSI+CisgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDAiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0idmVydGljYWwiIGlkPSJjaGlsZDAxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9InZlcnRpY2FsIiBpZD0iY2hpbGQwMiI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ2ZXJ0aWNhbCIgaWQ9ImNoaWxkMDMiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVydGljYWwiIGlkPSJjaGlsZDA0Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InZl
cnRpY2FsIiBpZD0iY2hpbGQwNSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAg
PC9ib2R5PgorCis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="287173"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>