<?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>86425</bug_id>
          
          <creation_ts>2012-05-14 18:55:23 -0700</creation_ts>
          <short_desc>[chromium] Expose layer tiling size options to WebSettings</short_desc>
          <delta_ts>2012-05-17 18:20:04 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>623555</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-14 18:55:23 -0700</bug_when>
    <thetext>Currently the default tile dimensions and maximum un-tiled layer size are hardcoded in TiledLayerChromium. This makes it hard to experiment with different tiling strategies. Exposing these values via WebSettings will allow us to pass the desired tiling parameters via command-line flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624400</commentid>
    <comment_count>1</comment_count>
      <attachid>142029</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-15 12:40:06 -0700</bug_when>
    <thetext>Created attachment 142029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624410</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 12:44:42 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624416</commentid>
    <comment_count>3</comment_count>
      <attachid>142029</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-15 12:49:37 -0700</bug_when>
    <thetext>Comment on attachment 142029
Patch

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

I guess we may have to think and experiment a bit with occlusion tracking and different tile sizes. The 160 seemed to work well with 256x256 tiles. If tiles are 100x100, then tracking 100x100 areas would probably yield some benefits (or maybe not!). Anyhow, something for us to consider.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:118
&gt; +    const CCSettings settings = layerTreeHost()-&gt;settings();

reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624434</commentid>
    <comment_count>4</comment_count>
      <attachid>142029</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-15 12:58:45 -0700</bug_when>
    <thetext>Comment on attachment 142029
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:47
&gt; +// When tiling is enabled, use tiles of this size. The LTH
&gt; +// settings can override these values.

we shouldn&apos;t need these values at all since we always grab them off the CCSettings. Can you just delete them?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:116
&gt; +    ASSERT(layerTreeHost());

do we always have a valid layerTreeHost in tests?

&gt; Source/WebKit/chromium/public/WebSettings.h:151
&gt; +    virtual void setDefaultTileWidth(int) = 0;
&gt; +    virtual void setDefaultTileHeight(int) = 0;
&gt; +    virtual void setMaxUntiledLayerWidth(int) = 0;
&gt; +    virtual void setMaxUntiledLayerHeight(int) = 0;

rather than width/height pairs can the tile parameters be WebRects (and IntRects in the WebCore code)?

&gt; Source/WebKit/chromium/src/WebSettingsImpl.h:151
&gt; +    virtual void setDefaultTileWidth(int);
&gt; +    virtual void setDefaultTileHeight(int);
&gt; +    virtual void setMaxUntiledLayerWidth(int);
&gt; +    virtual void setMaxUntiledLayerHeight(int);

can you put these with the rest of the virtuals (above showFPSCounter/etc)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624617</commentid>
    <comment_count>5</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-15 15:01:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 142029 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142029&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:47
&gt; &gt; +// When tiling is enabled, use tiles of this size. The LTH
&gt; &gt; +// settings can override these values.
&gt; 
&gt; we shouldn&apos;t need these values at all since we always grab them off the CCSettings. Can you just delete them?

They are used in the constructor to create the initial CCLayerTilingData. In theory should be able to function even if updateTileSizeAndTilingOption() isn&apos;t called so we probably want to initialize it with something reasonable.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:116
&gt; &gt; +    ASSERT(layerTreeHost());
&gt; 
&gt; do we always have a valid layerTreeHost in tests?

It&apos;s used a bit further down in this function without any checks so I assume yes.  I just put in the assert just in case. 

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:151
&gt; &gt; +    virtual void setDefaultTileWidth(int) = 0;
&gt; &gt; +    virtual void setDefaultTileHeight(int) = 0;
&gt; &gt; +    virtual void setMaxUntiledLayerWidth(int) = 0;
&gt; &gt; +    virtual void setMaxUntiledLayerHeight(int) = 0;
&gt; 
&gt; rather than width/height pairs can the tile parameters be WebRects (and IntRects in the WebCore code)?

Will do.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebSettingsImpl.h:151
&gt; &gt; +    virtual void setDefaultTileWidth(int);
&gt; &gt; +    virtual void setDefaultTileHeight(int);
&gt; &gt; +    virtual void setMaxUntiledLayerWidth(int);
&gt; &gt; +    virtual void setMaxUntiledLayerHeight(int);
&gt; 
&gt; can you put these with the rest of the virtuals (above showFPSCounter/etc)?

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626649</commentid>
    <comment_count>6</comment_count>
      <attachid>142492</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 09:53:08 -0700</bug_when>
    <thetext>Created attachment 142492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626651</commentid>
    <comment_count>7</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 09:53:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=142492) [details]
&gt; Patch

Addressed review comments.  Please take another look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626741</commentid>
    <comment_count>8</comment_count>
      <attachid>142492</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-17 11:16:25 -0700</bug_when>
    <thetext>Comment on attachment 142492
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:129
&gt; +    const bool anyDimensionLarge = contentBounds().width() &gt; settings.maxUntiledLayerSize.width() || contentBounds().height() &gt; settings.maxUntiledLayerSize.height();
&gt; +    const bool anyDimensionOneTile = (contentBounds().width() &lt;= settings.defaultTileSize.width() || contentBounds().height() &lt;= settings.defaultTileSize.height())
&gt; +                                      &amp;&amp; (contentBounds().width() * contentBounds().height()) &lt;= (settings.maxUntiledLayerSize.width() * settings.maxUntiledLayerSize.height());

these are all quite a mouthful. any way to simplify these (maybe store some repeated invocations like contentBounds().width() in locals)?

the area check appears new, what&apos;s it for?

&gt; Source/WebKit/chromium/public/WebSettings.h:150
&gt; +    virtual void setDefaultTileSize(const WebSize&amp;) = 0;
&gt; +    virtual void setMaxUntiledLayerSize(const WebSize&amp;) = 0;

I think we should pass WebSize by value in the WK API, it&apos;s just a struct with 2 ints.  const ref is overkill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626813</commentid>
    <comment_count>9</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 12:03:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 142492 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142492&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:129
&gt; &gt; +    const bool anyDimensionLarge = contentBounds().width() &gt; settings.maxUntiledLayerSize.width() || contentBounds().height() &gt; settings.maxUntiledLayerSize.height();
&gt; &gt; +    const bool anyDimensionOneTile = (contentBounds().width() &lt;= settings.defaultTileSize.width() || contentBounds().height() &lt;= settings.defaultTileSize.height())
&gt; &gt; +                                      &amp;&amp; (contentBounds().width() * contentBounds().height()) &lt;= (settings.maxUntiledLayerSize.width() * settings.maxUntiledLayerSize.height());
&gt; 
&gt; these are all quite a mouthful. any way to simplify these (maybe store some repeated invocations like contentBounds().width() in locals)?
&gt; 
&gt; the area check appears new, what&apos;s it for?

The heuristic was originally in place to deal with skinny long layers such as scrollbars to avoid creating lots of tiles for them. However, if you allow for arbitrary tiling sizes, skinny becomes somewhat less well defined.

Case in point: Imagine you set your defaultTileSize to (1024, 256) in order to make wide but short tiles that could be more optimal for vertical scrolling. If your window size drops to 1000 pixels wide then with the old logic you would end up creating a single tile of (1000, pageHeight) pixels up to pageHeight == maxTextureSize for the root layer. The resulting texture could end up being quite large.  With this added logic, we only trigger the single-tile special case if the resulting overall tile area will be smaller than the area of the largest layer we&apos;re comfortable not tiling.

We actually had a similar problem in: http://code.google.com/p/chromium/issues/detail?id=97241#c7

so I figured it&apos;s a good fix regardless.


New patch addressing the rest of the feedback is on its way.  Thanks.


&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:150
&gt; &gt; +    virtual void setDefaultTileSize(const WebSize&amp;) = 0;
&gt; &gt; +    virtual void setMaxUntiledLayerSize(const WebSize&amp;) = 0;
&gt; 
&gt; I think we should pass WebSize by value in the WK API, it&apos;s just a struct with 2 ints.  const ref is overkill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626817</commentid>
    <comment_count>10</comment_count>
      <attachid>142522</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 12:04:39 -0700</bug_when>
    <thetext>Created attachment 142522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627022</commentid>
    <comment_count>11</comment_count>
      <attachid>142522</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-17 15:05:09 -0700</bug_when>
    <thetext>Comment on attachment 142522
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:49
&gt; +// When tiling is enabled, use tiles of this size, unless the LTH
&gt; +// settings provide different values.
&gt;  static int defaultTileWidth = 256;
&gt;  static int defaultTileHeight = 256;

It still seems a little weird to have these values here, as if they&apos;ll ever be used.  I&apos;d almost rather just pass IntSize() as the initial tile size so that there can be no mistake about where the tile size is coming from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627129</commentid>
    <comment_count>12</comment_count>
      <attachid>142587</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 16:49:31 -0700</bug_when>
    <thetext>Created attachment 142587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627130</commentid>
    <comment_count>13</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-05-17 16:50:31 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 142522 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142522&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:49
&gt; &gt; +// When tiling is enabled, use tiles of this size, unless the LTH
&gt; &gt; +// settings provide different values.
&gt; &gt;  static int defaultTileWidth = 256;
&gt; &gt;  static int defaultTileHeight = 256;
&gt; 
&gt; It still seems a little weird to have these values here, as if they&apos;ll ever be used.  I&apos;d almost rather just pass IntSize() as the initial tile size so that there can be no mistake about where the tile size is coming from.

Makes sense.  I did what you suggested in the latest patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627144</commentid>
    <comment_count>14</comment_count>
      <attachid>142587</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-17 17:24:11 -0700</bug_when>
    <thetext>Comment on attachment 142587
Patch

Thanks! R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627193</commentid>
    <comment_count>15</comment_count>
      <attachid>142587</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 18:19:59 -0700</bug_when>
    <thetext>Comment on attachment 142587
Patch

Clearing flags on attachment: 142587

Committed r117521: &lt;http://trac.webkit.org/changeset/117521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627194</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 18:20:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142029</attachid>
            <date>2012-05-15 12:40:06 -0700</date>
            <delta_ts>2012-05-17 09:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86425-20120515124005.patch</filename>
            <type>text/plain</type>
            <size>14554</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MTE1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE1ICBWYW5n
ZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEV4cG9zZSBsYXllciB0aWxpbmcgc2l6ZSBvcHRpb25zIHRvIFdlYlNldHRpbmdzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MjUKKworICAg
ICAgICBBZGRpbmcgZW50cmllcyBmb3IgdGlsZSBzaXplIGFuZCBtYXggdW50aWxlZCBsYXllciBz
aXplLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFNldHRpbmdzKToK
KwogMjAxMi0wNS0xNCAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgUHJlcmVuZGVyZXIsIFByZXJlbmRlckhhbmRsZSBhbmQgYSBjaHJvbWl1bSBpbnRl
cmZhY2UgZm9yIFByZXJlbmRlcmluZy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCShyZXZpc2lvbiAxMTcwODYpCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNiArNTcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgLCBwZXJUaWxl
UGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkK
ICAgICAgICAgICAgICwgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQorICAgICAgICAg
ICAgLCBkZWZhdWx0VGlsZVdpZHRoKDI1NikKKyAgICAgICAgICAgICwgZGVmYXVsdFRpbGVIZWln
aHQoMjU2KQorICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJXaWR0aCg1MTIpCisgICAgICAg
ICAgICAsIG1heFVudGlsZWRMYXllckhlaWdodCg1MTIpCiAgICAgICAgIHsKICAgICAgICAgfQog
CkBAIC02OCw2ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcGVyVGlsZVBhaW50aW5n
OwogICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKICAgICAgICAgYm9vbCB0aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQ7CisgICAgICAgIGludCBkZWZhdWx0VGlsZVdpZHRoOworICAgICAg
ICBpbnQgZGVmYXVsdFRpbGVIZWlnaHQ7CisgICAgICAgIGludCBtYXhVbnRpbGVkTGF5ZXJXaWR0
aDsKKyAgICAgICAgaW50IG1heFVudGlsZWRMYXllckhlaWdodDsKICNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KICAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxMTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNS0xNSAg
VmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBFeHBvc2UgbGF5ZXIgdGlsaW5nIHNpemUgb3B0aW9ucyB0byBXZWJTZXR0aW5ncy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDI1CisK
KyAgICAgICAgUmVtb3ZpbmcgaGFyZGNvZGVkIHRpbGUgc2l6ZSBhbmQgbWF4IHVudGlsZWQgbGF5
ZXIgc2l6ZSBmcm9tIFRpbGVkTGF5ZXJDaHJvbWl1bQorICAgICAgICBhbmQgaW5zdGVhZCBoYXZl
IHRoZSB2YWx1ZXMgcGFzc2VkIGluIHZpYSB0aGUgTFRIIENDU2V0dGluZ3MuIFRoaXMgd2lsbCBh
bGxvdworICAgICAgICBkaWZmZXJlbnQgY29tcG9zaXRvciBpbnN0YW5jZXMgdG8gYWRqdXN0IHRp
bGluZyBwYXJhbWV0ZXJzIGFzIG5lZWRlZCBhbmQgbWFrZXMKKyAgICAgICAgaXQgcG9zc2libGUg
dG8gcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgZnJvbSB0aGUgYnJvd3NlciBjb21tYW5kIGxpbmUu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0
aW9uKToKKyAgICAgICAgVXBkYXRlZCB0aGUgaGV1cmlzdGljIGZvciBza2lubnkgbGF5ZXJzIHRv
IHVzZSB0aGUgdG90YWwgYXJlYSBpbnN0ZWFkIG9mCisgICAgICAgIGp1c3QgcmVseWluZyBvbiBv
bmUgZGltZW5zaW9uIGJlaW5nIHNtYWxsLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN1cHBv
cnQKKyAgICAgICAgd2lkZSAoZS5nLiB2aWV3cG9ydC1zaXplKSBidXQgc2hvcnQgdGlsZSBzaXpl
cyB3aXRob3V0IHR1cm5pbmcgdGlsaW5nIGNvbXBsZXRlbHkKKyAgICAgICAgb2ZmIGZvciB0aGUg
cm9vdCBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Omlu
aXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OkNDU2V0dGluZ3MpOgorICAgICAgICAoQ0NTZXR0aW5ncyk6CisKIDIwMTItMDUtMTUgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVuLXVz
ZWQgR1N0cmVhbWVyIGxpbmtlciBvcHRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDEwICs0Myw4IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIAotLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBo
ZWlnaHQgb2YgYSBsYXllciBhcmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBt
YXhVbnRpbGVkU2l6ZSA9IDUxMjsKLQotLy8gV2hlbiB0aWxpbmcgaXMgZW5hYmxlZCwgdXNlIHRp
bGVzIG9mIHRoaXMgc2l6ZToKKy8vIFdoZW4gdGlsaW5nIGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBv
ZiB0aGlzIHNpemUuIFRoZSBMVEgKKy8vIHNldHRpbmdzIGNhbiBvdmVycmlkZSB0aGVzZSB2YWx1
ZXMuCiBzdGF0aWMgaW50IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7CiBzdGF0aWMgaW50IGRlZmF1
bHRUaWxlSGVpZ2h0ID0gMjU2OwogCkBAIC0xMTUsMTQgKzExMywxOSBAQCBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBUaWxlZExheWVyQ2hyb21pCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7Ci0gICAgY29uc3QgSW50U2l6ZSB0aWxl
U2l6ZShtaW4oZGVmYXVsdFRpbGVXaWR0aCwgY29udGVudEJvdW5kcygpLndpZHRoKCkpLCBtaW4o
ZGVmYXVsdFRpbGVIZWlnaHQsIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOworICAgIEFTU0VS
VChsYXllclRyZWVIb3N0KCkpOworCisgICAgY29uc3QgQ0NTZXR0aW5ncyBzZXR0aW5ncyA9IGxh
eWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKTsKKworICAgIGNvbnN0IEludFNpemUgdGlsZVNpemUo
bWluKHNldHRpbmdzLmRlZmF1bHRUaWxlV2lkdGgsIGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwg
bWluKHNldHRpbmdzLmRlZmF1bHRUaWxlSGVpZ2h0LCBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkp
KTsKIAotICAgIC8vIFRpbGUgaWYgYm90aCBkaW1lbnNpb25zIGxhcmdlLCBvciBhbnkgb25lIGRp
bWVuc2lvbiBsYXJnZSBhbmQgdGhlIG90aGVyCi0gICAgLy8gZXh0ZW5kcyBpbnRvIGEgc2Vjb25k
IHRpbGUuIFRoaXMgaGV1cmlzdGljIGFsbG93cyBmb3IgbG9uZyBza2lubnkgbGF5ZXJzCi0gICAg
Ly8gKGUuZy4gc2Nyb2xsYmFycykgdGhhdCBhcmUgTngxIHRpbGVzIHRvIG1pbmltaXplIHdhc3Rl
ZCB0ZXh0dXJlIHNwYWNlLgotICAgIGNvbnN0IGJvb2wgYW55RGltZW5zaW9uTGFyZ2UgPSBjb250
ZW50Qm91bmRzKCkud2lkdGgoKSA+IG1heFVudGlsZWRTaXplIHx8IGNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSA+IG1heFVudGlsZWRTaXplOwotICAgIGNvbnN0IGJvb2wgYW55RGltZW5zaW9uT25l
VGlsZSA9IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIDw9IGRlZmF1bHRUaWxlV2lkdGggfHwgY29u
dGVudEJvdW5kcygpLmhlaWdodCgpIDw9IGRlZmF1bHRUaWxlSGVpZ2h0OwotICAgIGNvbnN0IGJv
b2wgYXV0b1RpbGVkID0gYW55RGltZW5zaW9uTGFyZ2UgJiYgIWFueURpbWVuc2lvbk9uZVRpbGU7
CisgICAgLy8gVGlsZSBpZiBib3RoIGRpbWVuc2lvbnMgbGFyZ2UsIG9yIGFueSBvbmUgZGltZW5z
aW9uIGxhcmdlIGJ1dCB0aGUgb3ZlcmFsbAorICAgIC8vIGNvbnRlbnQgYXJlYSBpcyBzbWFsbGVy
IHRoYW4gdGhlIGFyZWEgb2YgYSBkZWZhdWx0IHRpbGUuIFRoaXMgaGV1cmlzdGljCisgICAgLy8g
YWxsb3dzIGZvciBsb25nIHNraW5ueSBsYXllcnMgKGUuZy4gc2Nyb2xsYmFycykgdGhhdCBhcmUg
TngxIHRpbGVzIHRvIAorICAgIC8vIG1pbmltaXplIHdhc3RlZCB0ZXh0dXJlIHNwYWNlLgorICAg
IGNvbnN0IGJvb2wgYW55RGltZW5zaW9uTGFyZ2UgPSBjb250ZW50Qm91bmRzKCkud2lkdGgoKSA+
IHNldHRpbmdzLm1heFVudGlsZWRMYXllcldpZHRoIHx8IGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQo
KSA+IHNldHRpbmdzLm1heFVudGlsZWRMYXllckhlaWdodDsKKyAgICBjb25zdCBib29sIGFyZWFT
bWFsbGVyVGhhbk9uZVRpbGUgPSBjb250ZW50Qm91bmRzKCkud2lkdGgoKSAqIGNvbnRlbnRCb3Vu
ZHMoKS5oZWlnaHQoKSA8PSBzZXR0aW5ncy5kZWZhdWx0VGlsZVdpZHRoICogc2V0dGluZ3MuZGVm
YXVsdFRpbGVIZWlnaHQ7CisgICAgY29uc3QgYm9vbCBhdXRvVGlsZWQgPSBhbnlEaW1lbnNpb25M
YXJnZSAmJiAhYXJlYVNtYWxsZXJUaGFuT25lVGlsZTsKIAogICAgIGJvb2wgaXNUaWxlZDsKICAg
ICBpZiAobV90aWxpbmdPcHRpb24gPT0gQWx3YXlzVGlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6
ZUxheWVyUmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNp
emUpOwogCiAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgbV9z
ZXR0aW5ncy5kZWZhdWx0VGlsZVdpZHRoID0gbWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVXaWR0
aCwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsK
KyAgICBtX3NldHRpbmdzLmRlZmF1bHRUaWxlSGVpZ2h0ID0gbWluKG1fc2V0dGluZ3MuZGVmYXVs
dFRpbGVIZWlnaHQsIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0
dXJlU2l6ZSk7CisgICAgbV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJXaWR0aCA9IG1pbihtX3Nl
dHRpbmdzLm1heFVudGlsZWRMYXllcldpZHRoLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgIG1fc2V0dGluZ3MubWF4VW50aWxlZExheWVy
SGVpZ2h0ID0gbWluKG1fc2V0dGluZ3MubWF4VW50aWxlZExheWVySGVpZ2h0LCBtX3Byb3h5LT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogfQogCiBDQ0xheWVy
VHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0IENDTGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAxMTcwODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsMTEgQEAgc3RydWN0IENDU2V0dGlu
Z3MgewogICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAs
IHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkKICAgICAgICAgICAgICwgdGhyZWFkZWRBbmltYXRp
b25FbmFibGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMo
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeyB9CisgICAgICAgICAgICAsIG1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KQorICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVdpZHRoKDI1NikKKyAgICAgICAgICAgICwgZGVm
YXVsdFRpbGVIZWlnaHQoMjU2KQorICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJXaWR0aCg1
MTIpCisgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllckhlaWdodCg1MTIpIHsgfQogCiAgICAg
Ym9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKQEAgLTk2
LDYgKzEwMCwxMCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVu
YWJsZWQ7CiAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgc2l6ZV90IG1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlczsKKyAgICBpbnQgZGVmYXVsdFRpbGVXaWR0aDsKKyAgICBp
bnQgZGVmYXVsdFRpbGVIZWlnaHQ7CisgICAgaW50IG1heFVudGlsZWRMYXllcldpZHRoOworICAg
IGludCBtYXhVbnRpbGVkTGF5ZXJIZWlnaHQ7CiB9OwogCiAvLyBQcm92aWRlcyBpbmZvcm1hdGlv
biBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRvIHRoZSBDQ0xheWVy
VHJlZUhvc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxMTUp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMyIEBACisyMDEyLTA1LTE1ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBFeHBvc2UgbGF5ZXIgdGlsaW5nIHNpemUgb3B0aW9ucyB0
byBXZWJTZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2NDI1CisKKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHRpbGluZyBwYXJhbWV0ZXJz
IHRvIGJlIHNldCB2aWEgY29tbWFuZCBsaW5lIGZsYWdzCisgICAgICAgIHBhc3NlZCB0byB0aGUg
UmVuZGVyZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVy
YXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldERlZmF1bHRUaWxlV2lkdGgpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0
VGlsZUhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0TWF4VW50
aWxlZExheWVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE1h
eFVudGlsZWRMYXllckhlaWdodCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgor
ICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJ
bXBsOjpkZWZhdWx0VGlsZVdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjpkZWZhdWx0VGlsZUhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6
bWF4VW50aWxlZExheWVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6
Om1heFVudGlsZWRMYXllckhlaWdodCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSk6CisKIDIwMTItMDUtMTUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE2ODExLgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCShyZXZpc2lvbiAx
MTcwODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Vmlld3BvcnRFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdmlld3Bv
cnRFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0VGlsZVdp
ZHRoKGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0VGlsZUhlaWdodChpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVyV2lkdGgoaW50KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXllckhlaWdodChpbnQpID0gMDsKKwog
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAkocmV2aXNpb24gMTE3MDg2
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDEwIEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdz
OjpvcGVyYXRvciBDQ1MKICAgICBzZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwZXJUaWxlUGFp
bnRpbmc7CiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFydGlhbFN3YXBFbmFi
bGVkOwogICAgIHNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZDsKKyAgICBzZXR0aW5ncy5kZWZhdWx0VGlsZVdpZHRoID0gZGVmYXVsdFRp
bGVXaWR0aDsKKyAgICBzZXR0aW5ncy5kZWZhdWx0VGlsZUhlaWdodCA9IGRlZmF1bHRUaWxlSGVp
Z2h0OworICAgIHNldHRpbmdzLm1heFVudGlsZWRMYXllcldpZHRoID0gbWF4VW50aWxlZExheWVy
V2lkdGg7CisgICAgc2V0dGluZ3MubWF4VW50aWxlZExheWVySGVpZ2h0ID0gbWF4VW50aWxlZExh
eWVySGVpZ2h0OwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlIC8gbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzIGFyZW4ndCBzdXBwb3J0ZWQgY3Vy
cmVudGx5LgogICAgIHJldHVybiBzZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNiArNTEsMTAgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0
dGluZwogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgLCBtX3Nob3dQ
YWludFJlY3RzKGZhbHNlKQogICAgICwgbV92aWV3cG9ydEVuYWJsZWQoZmFsc2UpCisgICAgLCBt
X2RlZmF1bHRUaWxlV2lkdGgoMjU2KQorICAgICwgbV9kZWZhdWx0VGlsZUhlaWdodCgyNTYpCisg
ICAgLCBtX21heFVudGlsZWRMYXllcldpZHRoKDUxMikKKyAgICAsIG1fbWF4VW50aWxlZExheWVy
SGVpZ2h0KDUxMikKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNTczLDQgKzU3Nywy
NCBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Vmlld3BvcnRFbmFibGVkCiAgICAgbV92aWV3
cG9ydEVuYWJsZWQgPSBlbmFibGVkOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVm
YXVsdFRpbGVXaWR0aChpbnQgd2lkdGgpCit7CisgICAgbV9kZWZhdWx0VGlsZVdpZHRoID0gd2lk
dGg7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0VGlsZUhlaWdodChpbnQg
aGVpZ2h0KQoreworICAgIG1fZGVmYXVsdFRpbGVIZWlnaHQgPSBoZWlnaHQ7Cit9CisKK3ZvaWQg
V2ViU2V0dGluZ3NJbXBsOjpzZXRNYXhVbnRpbGVkTGF5ZXJXaWR0aChpbnQgd2lkdGgpCit7Cisg
ICAgbV9tYXhVbnRpbGVkTGF5ZXJXaWR0aCA9IHdpZHRoOworfQorCit2b2lkIFdlYlNldHRpbmdz
SW1wbDo6c2V0TWF4VW50aWxlZExheWVySGVpZ2h0KGludCBoZWlnaHQpCit7CisgICAgbV9tYXhV
bnRpbGVkTGF5ZXJIZWlnaHQgPSBoZWlnaHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJl
dmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0NSwyNSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQbGF0Zm9y
bUxheWVyVHJlZTsgfQogICAgIGJvb2wgc2hvd1BhaW50UmVjdHMoKSBjb25zdCB7IHJldHVybiBt
X3Nob3dQYWludFJlY3RzOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFRpbGVXaWR0
aChpbnQpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0VGlsZUhlaWdodChpbnQpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJXaWR0aChpbnQpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJIZWlnaHQoaW50KTsKKyAgICBpbnQgZGVmYXVsdFRpbGVX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRpbGVXaWR0aDsgfQorICAgIGludCBkZWZh
dWx0VGlsZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRpbGVIZWlnaHQ7IH0KKyAg
ICBpbnQgbWF4VW50aWxlZExheWVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21heFVudGlsZWRM
YXllcldpZHRoOyB9CisgICAgaW50IG1heFVudGlsZWRMYXllckhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWF4VW50aWxlZExheWVySGVpZ2h0OyB9CisKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MqIG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJv
b2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBtX3Nob3dQYWludFJlY3RzOwog
ICAgIGJvb2wgbV92aWV3cG9ydEVuYWJsZWQ7CisgICAgaW50IG1fZGVmYXVsdFRpbGVXaWR0aDsK
KyAgICBpbnQgbV9kZWZhdWx0VGlsZUhlaWdodDsKKyAgICBpbnQgbV9tYXhVbnRpbGVkTGF5ZXJX
aWR0aDsKKyAgICBpbnQgbV9tYXhVbnRpbGVkTGF5ZXJIZWlnaHQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyNyw2ICszMzI3LDExIEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3MKICAgICAgICAgbGF5ZXJUcmVlVmll
d1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFydGlh
bFN3YXBFbmFibGVkKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy50aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZCgpOwogCisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5kZWZhdWx0VGlsZVdpZHRo
ID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRUaWxlV2lkdGgoKTsKKyAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLmRlZmF1bHRUaWxlSGVpZ2h0ID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRU
aWxlSGVpZ2h0KCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5tYXhVbnRpbGVkTGF5
ZXJXaWR0aCA9IHNldHRpbmdzSW1wbCgpLT5tYXhVbnRpbGVkTGF5ZXJXaWR0aCgpOworICAgICAg
ICBsYXllclRyZWVWaWV3U2V0dGluZ3MubWF4VW50aWxlZExheWVySGVpZ2h0ID0gc2V0dGluZ3NJ
bXBsKCktPm1heFVudGlsZWRMYXllckhlaWdodCgpOworCiAgICAgICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0lt
cGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93
RGVidWdCb3JkZXJzKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142492</attachid>
            <date>2012-05-17 09:53:08 -0700</date>
            <delta_ts>2012-05-17 12:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86425-20120517095307.patch</filename>
            <type>text/plain</type>
            <size>14325</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTE3ICBWYW5n
ZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEV4cG9zZSBsYXllciB0aWxpbmcgc2l6ZSBvcHRpb25zIHRvIFdlYlNldHRpbmdzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQyNQorCisgICAg
ICAgIEFkZGluZyBlbnRyaWVzIGZvciB0aWxlIHNpemUgYW5kIG1heCB1bnRpbGVkIGxheWVyIHNp
emUuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGlu
Z3MpOgorICAgICAgICAoU2V0dGluZ3MpOgorCiAyMDEyLTA1LTE2ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYXIgdGhlIG1fcHJp
dmF0ZSBwb2ludGVyIHdoZW4gZGVzdHJveWluZyBXZWJGaWx0ZXJPcGVyYXRpb25zIHRvIGF2b2lk
IGFzc2VydCBpbiBXZWJQcml2YXRlT3duUHRyCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAkocmV2aXNpb24gMTE3MDg2KQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNp
bmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIK
KyNpbmNsdWRlICJXZWJTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdDsKQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dDsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0
IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1
YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBwYXJ0
aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChmYWxzZSkKKyAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAy
NTYpKQorICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIp
KQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjgsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxl
ZDsKICAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CisgICAgICAgIFdlYlNp
emUgZGVmYXVsdFRpbGVTaXplOworICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkND
U2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMDUtMTcgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGxheWVyIHRpbGluZyBzaXplIG9wdGlv
bnMgdG8gV2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NjQyNQorCisgICAgICAgIFJlbW92aW5nIGhhcmRjb2RlZCB0aWxlIHNpemUg
YW5kIG1heCB1bnRpbGVkIGxheWVyIHNpemUgZnJvbSBUaWxlZExheWVyQ2hyb21pdW0KKyAgICAg
ICAgYW5kIGluc3RlYWQgaGF2ZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiB2aWEgdGhlIExUSCBDQ1Nl
dHRpbmdzLiBUaGlzIHdpbGwgYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGNvbXBvc2l0b3IgaW5z
dGFuY2VzIHRvIGFkanVzdCB0aWxpbmcgcGFyYW1ldGVycyBhcyBuZWVkZWQgYW5kIG1ha2VzCisg
ICAgICAgIGl0IHBvc3NpYmxlIHRvIHNldCB0aGUgdmFsdWVzIHZpYSBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24pOgorICAgICAgICBNYWRlIHNvbWUgYWRkaXRpb25hbCBhZGp1c3RtZW50cyB0byB0
aGUgc2luZ2xlLXRpbGUgaGV1cmlzdGljCisgICAgICAgIHRvIG1ha2UgaXQgd29yayBiZXR0ZXIg
d2l0aCBhcmJpdHJhcnkgc2l6ZXMgd2hpbGUgc3RpbGwgYXZvaWRpbmcKKyAgICAgICAgdG8gY3Jl
YXRlIHVucmVhc29uYWJseSBsYXJnZSBsYXllcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKwog
MjAxMi0wNS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgU291cmNlRnJhbWVzIHdpdGggY29udGVudCBwcm92
aWRlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEx
NzA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0Myw4IEBACiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAot
Ly8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBsYXllciBhcmUg
bGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9IDUxMjsK
LQotLy8gV2hlbiB0aWxpbmcgaXMgZW5hYmxlZCwgdXNlIHRpbGVzIG9mIHRoaXMgc2l6ZToKKy8v
IFdoZW4gdGlsaW5nIGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIHNpemUsIHVubGVzcyB0
aGUgTFRICisvLyBzZXR0aW5ncyBwcm92aWRlIGRpZmZlcmVudCB2YWx1ZXMuCiBzdGF0aWMgaW50
IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7CiBzdGF0aWMgaW50IGRlZmF1bHRUaWxlSGVpZ2h0ID0g
MjU2OwogCkBAIC0xMTUsMTMgKzExMywyMCBAQCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUaWxl
ZExheWVyQ2hyb21pCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFu
ZFRpbGluZ09wdGlvbigpCiB7Ci0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4oZGVmYXVs
dFRpbGVXaWR0aCwgY29udGVudEJvdW5kcygpLndpZHRoKCkpLCBtaW4oZGVmYXVsdFRpbGVIZWln
aHQsIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOworICAgIEFTU0VSVChsYXllclRyZWVIb3N0
KCkpOworCisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0KCkt
PnNldHRpbmdzKCk7CisKKyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihzZXR0aW5ncy5k
ZWZhdWx0VGlsZVNpemUud2lkdGgoKSwgY29udGVudEJvdW5kcygpLndpZHRoKCkpLCBtaW4oc2V0
dGluZ3MuZGVmYXVsdFRpbGVTaXplLmhlaWdodCgpLCBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkp
KTsKIAogICAgIC8vIFRpbGUgaWYgYm90aCBkaW1lbnNpb25zIGxhcmdlLCBvciBhbnkgb25lIGRp
bWVuc2lvbiBsYXJnZSBhbmQgdGhlIG90aGVyCi0gICAgLy8gZXh0ZW5kcyBpbnRvIGEgc2Vjb25k
IHRpbGUuIFRoaXMgaGV1cmlzdGljIGFsbG93cyBmb3IgbG9uZyBza2lubnkgbGF5ZXJzCi0gICAg
Ly8gKGUuZy4gc2Nyb2xsYmFycykgdGhhdCBhcmUgTngxIHRpbGVzIHRvIG1pbmltaXplIHdhc3Rl
ZCB0ZXh0dXJlIHNwYWNlLgotICAgIGNvbnN0IGJvb2wgYW55RGltZW5zaW9uTGFyZ2UgPSBjb250
ZW50Qm91bmRzKCkud2lkdGgoKSA+IG1heFVudGlsZWRTaXplIHx8IGNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSA+IG1heFVudGlsZWRTaXplOwotICAgIGNvbnN0IGJvb2wgYW55RGltZW5zaW9uT25l
VGlsZSA9IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIDw9IGRlZmF1bHRUaWxlV2lkdGggfHwgY29u
dGVudEJvdW5kcygpLmhlaWdodCgpIDw9IGRlZmF1bHRUaWxlSGVpZ2h0OworICAgIC8vIGV4dGVu
ZHMgaW50byBhIHNlY29uZCB0aWxlIGJ1dCB0aGUgdG90YWwgbGF5ZXIgYXJlYSBpc24ndCBsYXJn
ZXIgdGhhbiB0aGF0CisgICAgLy8gb2YgdGhlIGxhcmdlc3QgcG9zc2libGUgdW50aWxlZCBsYXll
ci4gVGhpcyBoZXVyaXN0aWMgYWxsb3dzIGZvciBsb25nIHNraW5ueSBsYXllcnMKKyAgICAvLyAo
ZS5nLiBzY3JvbGxiYXJzKSB0aGF0IGFyZSBOeDEgdGlsZXMgdG8gbWluaW1pemUgd2FzdGVkIHRl
eHR1cmUgc3BhY2UgYnV0IHN0aWxsIGF2b2lkcworICAgIC8vIGNyZWF0aW5nIHZlcnkgbGFyZ2Ug
dGlsZXMuCisgICAgY29uc3QgYm9vbCBhbnlEaW1lbnNpb25MYXJnZSA9IGNvbnRlbnRCb3VuZHMo
KS53aWR0aCgpID4gc2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZS53aWR0aCgpIHx8IGNvbnRl
bnRCb3VuZHMoKS5oZWlnaHQoKSA+IHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUuaGVpZ2h0
KCk7CisgICAgY29uc3QgYm9vbCBhbnlEaW1lbnNpb25PbmVUaWxlID0gKGNvbnRlbnRCb3VuZHMo
KS53aWR0aCgpIDw9IHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZS53aWR0aCgpIHx8IGNvbnRlbnRC
b3VuZHMoKS5oZWlnaHQoKSA8PSBzZXR0aW5ncy5kZWZhdWx0VGlsZVNpemUuaGVpZ2h0KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChjb250ZW50Qm91bmRzKCku
d2lkdGgoKSAqIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkgPD0gKHNldHRpbmdzLm1heFVudGls
ZWRMYXllclNpemUud2lkdGgoKSAqIHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUuaGVpZ2h0
KCkpOwogICAgIGNvbnN0IGJvb2wgYXV0b1RpbGVkID0gYW55RGltZW5zaW9uTGFyZ2UgJiYgIWFu
eURpbWVuc2lvbk9uZVRpbGU7CiAKICAgICBib29sIGlzVGlsZWQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OCw2ICsxNDgsMTEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRp
YWxpemVMYXllclJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1
cmVTaXplKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg
IG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gSW50U2l6ZShtaW4obV9zZXR0aW5ncy5kZWZh
dWx0VGlsZVNpemUud2lkdGgoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
Lm1heFRleHR1cmVTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplLmhlaWdodCgpLCBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpKTsKKyAgICBtX3NldHRpbmdz
Lm1heFVudGlsZWRMYXllclNpemUgPSBJbnRTaXplKG1pbihtX3NldHRpbmdzLm1heFVudGlsZWRM
YXllclNpemUud2lkdGgoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1h
eFRleHR1cmVTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pbihtX3NldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUuaGVpZ2h0KCksIG1fcHJveHkt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSkpOwogfQogCiBDQ0xh
eWVyVHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0IENDTGF5ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250
ZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAxMTcwODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsOSBAQCBzdHJ1Y3QgQ0NTZXR0
aW5ncyB7CiAgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAg
ICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCB0aHJlYWRlZEFuaW1h
dGlvbkVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRl
cyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7IH0KKyAgICAgICAgICAgICwg
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpCisgICAgICAgICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKKyAg
ICAgICAgICAgICwgbWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKDUxMiwgNTEyKSkgeyB9CiAK
ICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIHNob3dGUFNDb3VudGVyOwpA
QCAtOTYsNiArOTgsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBwYXJ0aWFsU3dh
cEVuYWJsZWQ7CiAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgc2l6ZV90
IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlczsKKyAgICBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZTsK
KyAgICBJbnRTaXplIG1heFVudGlsZWRMYXllclNpemU7CiB9OwogCiAvLyBQcm92aWRlcyBpbmZv
cm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRvIHRoZSBD
Q0xheWVyVHJlZUhvc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTc0NTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTE3ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdl
bGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBFeHBvc2UgbGF5ZXIgdGlsaW5nIHNpemUgb3B0
aW9ucyB0byBXZWJTZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2NDI1CisKKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHRpbGluZyBwYXJh
bWV0ZXJzIHRvIGJlIHNldCB2aWEgY29tbWFuZCBsaW5lIGZsYWdzCisgICAgICAgIHBhc3NlZCB0
byB0aGUgUmVuZGVyZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdz
OjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldERlZmF1bHRUaWxlU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE1h
eFVudGlsZWRMYXllclNpemUpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAg
ICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1w
bDo6ZGVmYXVsdFRpbGVTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpt
YXhVbnRpbGVkTGF5ZXJTaXplKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKToKKwogMjAxMi0wNS0xNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIENvbnZlcnQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVS
TFNjaGVtZSB0byB1c2UgSW50ZXJuYWxTZXR0aW5ncyBpbnRlcmZhY2UKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2aXNpb24gMTE3MDg2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJTZXR0aW5nc19oCiAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAj
aW5jbHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CiAKICNkZWZpbmUgSEFTX1dFQkFVRElPX0ZFQVRV
UkVfRU5BQkxFIDEKQEAgLTE0NSw2ICsxNDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZXdwb3J0RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZXdwb3J0
RW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFRpbGVTaXpl
KGNvbnN0IFdlYlNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXll
clNpemUoY29uc3QgV2ViU2l6ZSYpID0gMDsKKwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRp
bmdzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDgg
QEAgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDUwogICAgIHNldHRpbmdz
LnBlclRpbGVQYWludGluZyA9IHBlclRpbGVQYWludGluZzsKICAgICBzZXR0aW5ncy5wYXJ0aWFs
U3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcEVuYWJsZWQ7CiAgICAgc2V0dGluZ3MudGhyZWFkZWRB
bmltYXRpb25FbmFibGVkID0gdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOworICAgIHNldHRpbmdz
LmRlZmF1bHRUaWxlU2l6ZSA9IGRlZmF1bHRUaWxlU2l6ZTsKKyAgICBzZXR0aW5ncy5tYXhVbnRp
bGVkTGF5ZXJTaXplID0gbWF4VW50aWxlZExheWVyU2l6ZTsKIAogICAgIC8vIEZJWE1FOiBzaG93
RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcyBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KICAgICByZXR1cm4gc2V0dGluZ3M7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJ
KHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgV2ViU2V0dGluZ3NJ
bXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZwogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRy
ZWUoZmFsc2UpCiAgICAgLCBtX3Nob3dQYWludFJlY3RzKGZhbHNlKQogICAgICwgbV92aWV3cG9y
dEVuYWJsZWQoZmFsc2UpCisgICAgLCBtX2RlZmF1bHRUaWxlU2l6ZShXZWJTaXplKDI1NiwgMjU2
KSkKKyAgICAsIG1fbWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKDUxMiwgNTEyKSkKIHsKICAg
ICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNTczLDQgKzU3NSwxNCBAQCB2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0Vmlld3BvcnRFbmFibGVkCiAgICAgbV92aWV3cG9ydEVuYWJsZWQgPSBlbmFi
bGVkOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVmYXVsdFRpbGVTaXplKGNvbnN0
IFdlYlNpemUmIHNpemUpCit7CisgICAgbV9kZWZhdWx0VGlsZVNpemUgPSBzaXplOworfQorCit2
b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBXZWJTaXpl
JiBzaXplKQoreworICAgIG1fbWF4VW50aWxlZExheWVyU2l6ZSA9IHNpemU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3dQbGF0Zm9ybUxheWVyVHJlZShib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1
bHRUaWxlU2l6ZShjb25zdCBXZWJTaXplJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1heFVudGls
ZWRMYXllclNpemUoY29uc3QgV2ViU2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5n
QmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvcmNlQ29t
cG9zaXRpbmdNb2RlKGJvb2wpOwpAQCAtMTQ0LDYgKzE0Niw4IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3dGUFNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9zaG93RlBTQ291bnRlcjsgfQogICAg
IGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UGxhdGZv
cm1MYXllclRyZWU7IH0KICAgICBib29sIHNob3dQYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4g
bV9zaG93UGFpbnRSZWN0czsgfQorICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0VGlsZVNpemU7IH0KKyAgICBXZWJTaXplIG1heFVudGlsZWRMYXll
clNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFVudGlsZWRMYXllclNpemU7IH0KIAogcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKQEAgLTE1MSw2ICsxNTUsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBt
X3Nob3dQYWludFJlY3RzOwogICAgIGJvb2wgbV92aWV3cG9ydEVuYWJsZWQ7CisgICAgV2ViU2l6
ZSBtX2RlZmF1bHRUaWxlU2l6ZTsKKyAgICBXZWJTaXplIG1fbWF4VW50aWxlZExheWVyU2l6ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzI3LDYg
KzMzMjcsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zCiAgICAg
ICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYWdlKCktPnNl
dHRpbmdzKCktPnBhcnRpYWxTd2FwRW5hYmxlZCgpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0
dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT50aHJl
YWRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKIAorICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Mu
ZGVmYXVsdFRpbGVTaXplID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRUaWxlU2l6ZSgpOworICAg
ICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdz
SW1wbCgpLT5tYXhVbnRpbGVkTGF5ZXJTaXplKCk7CisKICAgICAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1w
bENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dE
ZWJ1Z0JvcmRlcnMoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142522</attachid>
            <date>2012-05-17 12:04:39 -0700</date>
            <delta_ts>2012-05-17 16:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86425-20120517120438.patch</filename>
            <type>text/plain</type>
            <size>14339</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTE3ICBWYW5n
ZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEV4cG9zZSBsYXllciB0aWxpbmcgc2l6ZSBvcHRpb25zIHRvIFdlYlNldHRpbmdzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQyNQorCisgICAg
ICAgIEFkZGluZyBlbnRyaWVzIGZvciB0aWxlIHNpemUgYW5kIG1heCB1bnRpbGVkIGxheWVyIHNp
emUuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGlu
Z3MpOgorICAgICAgICAoU2V0dGluZ3MpOgorCiAyMDEyLTA1LTE2ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYXIgdGhlIG1fcHJp
dmF0ZSBwb2ludGVyIHdoZW4gZGVzdHJveWluZyBXZWJGaWx0ZXJPcGVyYXRpb25zIHRvIGF2b2lk
IGFzc2VydCBpbiBXZWJQcml2YXRlT3duUHRyCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAkocmV2aXNpb24gMTE3MDg2KQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNp
bmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIK
KyNpbmNsdWRlICJXZWJTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdDsKQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dDsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0
IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1
YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBwYXJ0
aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChmYWxzZSkKKyAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAy
NTYpKQorICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIp
KQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjgsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxl
ZDsKICAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CisgICAgICAgIFdlYlNp
emUgZGVmYXVsdFRpbGVTaXplOworICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkND
U2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMDUtMTcgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGxheWVyIHRpbGluZyBzaXplIG9wdGlv
bnMgdG8gV2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NjQyNQorCisgICAgICAgIFJlbW92aW5nIGhhcmRjb2RlZCB0aWxlIHNpemUg
YW5kIG1heCB1bnRpbGVkIGxheWVyIHNpemUgZnJvbSBUaWxlZExheWVyQ2hyb21pdW0KKyAgICAg
ICAgYW5kIGluc3RlYWQgaGF2ZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiB2aWEgdGhlIExUSCBDQ1Nl
dHRpbmdzLiBUaGlzIHdpbGwgYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGNvbXBvc2l0b3IgaW5z
dGFuY2VzIHRvIGFkanVzdCB0aWxpbmcgcGFyYW1ldGVycyBhcyBuZWVkZWQgYW5kIG1ha2VzCisg
ICAgICAgIGl0IHBvc3NpYmxlIHRvIHNldCB0aGUgdmFsdWVzIHZpYSBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24pOgorICAgICAgICBNYWRlIHNvbWUgYWRkaXRpb25hbCBhZGp1c3RtZW50cyB0byB0
aGUgc2luZ2xlLXRpbGUgaGV1cmlzdGljCisgICAgICAgIHRvIG1ha2UgaXQgd29yayBiZXR0ZXIg
d2l0aCBhcmJpdHJhcnkgc2l6ZXMgd2hpbGUgc3RpbGwgYXZvaWRpbmcKKyAgICAgICAgdG8gY3Jl
YXRlIHVucmVhc29uYWJseSBsYXJnZSBsYXllcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKwog
MjAxMi0wNS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgU291cmNlRnJhbWVzIHdpdGggY29udGVudCBwcm92
aWRlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEx
NzA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0Myw4IEBACiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAot
Ly8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBsYXllciBhcmUg
bGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9IDUxMjsK
LQotLy8gV2hlbiB0aWxpbmcgaXMgZW5hYmxlZCwgdXNlIHRpbGVzIG9mIHRoaXMgc2l6ZToKKy8v
IFdoZW4gdGlsaW5nIGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIHNpemUsIHVubGVzcyB0
aGUgTFRICisvLyBzZXR0aW5ncyBwcm92aWRlIGRpZmZlcmVudCB2YWx1ZXMuCiBzdGF0aWMgaW50
IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7CiBzdGF0aWMgaW50IGRlZmF1bHRUaWxlSGVpZ2h0ID0g
MjU2OwogCkBAIC0xMTUsMTMgKzExMywyNCBAQCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUaWxl
ZExheWVyQ2hyb21pCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFu
ZFRpbGluZ09wdGlvbigpCiB7Ci0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4oZGVmYXVs
dFRpbGVXaWR0aCwgY29udGVudEJvdW5kcygpLndpZHRoKCkpLCBtaW4oZGVmYXVsdFRpbGVIZWln
aHQsIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOworICAgIEFTU0VSVChsYXllclRyZWVIb3N0
KCkpOworCisgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0KCkt
PnNldHRpbmdzKCk7CisgICAgY29uc3QgSW50U2l6ZSYgZGVmYXVsdFRpbGVTaXplID0gc2V0dGlu
Z3MuZGVmYXVsdFRpbGVTaXplOworICAgIGNvbnN0IEludFNpemUmIG1heFVudGlsZWRMYXllclNp
emUgPSBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplOworICAgIGludCBsYXllcldpZHRoID0g
Y29udGVudEJvdW5kcygpLndpZHRoKCk7CisgICAgaW50IGxheWVySGVpZ2h0ID0gY29udGVudEJv
dW5kcygpLmhlaWdodCgpOworCisgICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4oZGVmYXVs
dFRpbGVTaXplLndpZHRoKCksIGxheWVyV2lkdGgpLCBtaW4oZGVmYXVsdFRpbGVTaXplLmhlaWdo
dCgpLCBsYXllckhlaWdodCkpOwogCiAgICAgLy8gVGlsZSBpZiBib3RoIGRpbWVuc2lvbnMgbGFy
Z2UsIG9yIGFueSBvbmUgZGltZW5zaW9uIGxhcmdlIGFuZCB0aGUgb3RoZXIKLSAgICAvLyBleHRl
bmRzIGludG8gYSBzZWNvbmQgdGlsZS4gVGhpcyBoZXVyaXN0aWMgYWxsb3dzIGZvciBsb25nIHNr
aW5ueSBsYXllcnMKLSAgICAvLyAoZS5nLiBzY3JvbGxiYXJzKSB0aGF0IGFyZSBOeDEgdGlsZXMg
dG8gbWluaW1pemUgd2FzdGVkIHRleHR1cmUgc3BhY2UuCi0gICAgY29uc3QgYm9vbCBhbnlEaW1l
bnNpb25MYXJnZSA9IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpID4gbWF4VW50aWxlZFNpemUgfHwg
Y29udGVudEJvdW5kcygpLmhlaWdodCgpID4gbWF4VW50aWxlZFNpemU7Ci0gICAgY29uc3QgYm9v
bCBhbnlEaW1lbnNpb25PbmVUaWxlID0gY29udGVudEJvdW5kcygpLndpZHRoKCkgPD0gZGVmYXVs
dFRpbGVXaWR0aCB8fCBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkgPD0gZGVmYXVsdFRpbGVIZWln
aHQ7CisgICAgLy8gZXh0ZW5kcyBpbnRvIGEgc2Vjb25kIHRpbGUgYnV0IHRoZSB0b3RhbCBsYXll
ciBhcmVhIGlzbid0IGxhcmdlciB0aGFuIHRoYXQKKyAgICAvLyBvZiB0aGUgbGFyZ2VzdCBwb3Nz
aWJsZSB1bnRpbGVkIGxheWVyLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxvbmcgc2tpbm55
IGxheWVycworICAgIC8vIChlLmcuIHNjcm9sbGJhcnMpIHRoYXQgYXJlIE54MSB0aWxlcyB0byBt
aW5pbWl6ZSB3YXN0ZWQgdGV4dHVyZSBzcGFjZSBidXQgc3RpbGwgYXZvaWRzCisgICAgLy8gY3Jl
YXRpbmcgdmVyeSBsYXJnZSB0aWxlcy4KKyAgICBjb25zdCBib29sIGFueURpbWVuc2lvbkxhcmdl
ID0gbGF5ZXJXaWR0aCA+IG1heFVudGlsZWRMYXllclNpemUud2lkdGgoKSB8fCBsYXllckhlaWdo
dCA+IG1heFVudGlsZWRMYXllclNpemUuaGVpZ2h0KCk7CisgICAgY29uc3QgYm9vbCBhbnlEaW1l
bnNpb25PbmVUaWxlID0gKGxheWVyV2lkdGggPD0gZGVmYXVsdFRpbGVTaXplLndpZHRoKCkgfHwg
bGF5ZXJIZWlnaHQgPD0gZGVmYXVsdFRpbGVTaXplLmhlaWdodCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAobGF5ZXJXaWR0aCAqIGxheWVySGVpZ2h0KSA8PSAo
bWF4VW50aWxlZExheWVyU2l6ZS53aWR0aCgpICogbWF4VW50aWxlZExheWVyU2l6ZS5oZWlnaHQo
KSk7CiAgICAgY29uc3QgYm9vbCBhdXRvVGlsZWQgPSBhbnlEaW1lbnNpb25MYXJnZSAmJiAhYW55
RGltZW5zaW9uT25lVGlsZTsKIAogICAgIGJvb2wgaXNUaWxlZDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlh
bGl6ZUxheWVyUmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpOwogCiAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAg
bV9zZXR0aW5ncy5kZWZhdWx0VGlsZVNpemUgPSBJbnRTaXplKG1pbihtX3NldHRpbmdzLmRlZmF1
bHRUaWxlU2l6ZS53aWR0aCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCku
bWF4VGV4dHVyZVNpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtaW4obV9zZXR0aW5ncy5kZWZhdWx0VGlsZVNpemUuaGVpZ2h0KCksIG1fcHJveHktPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSkpOworICAgIG1fc2V0dGluZ3Mu
bWF4VW50aWxlZExheWVyU2l6ZSA9IEludFNpemUobWluKG1fc2V0dGluZ3MubWF4VW50aWxlZExh
eWVyU2l6ZS53aWR0aCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWluKG1fc2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZS5oZWlnaHQoKSwgbV9wcm94eS0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKSk7CiB9CiAKIENDTGF5
ZXJUcmVlSG9zdDo6UmVjcmVhdGVSZXN1bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRl
eHQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDExNzA4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw5IEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAg
LCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0
aW9uRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsgfQorICAgICAgICAgICAgLCBt
YXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSkKKyAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKEludFNpemUoMjU2LCAyNTYpKQorICAg
ICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKEludFNpemUoNTEyLCA1MTIpKSB7IH0KIAog
ICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CkBA
IC05Niw2ICs5OCw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHBhcnRpYWxTd2Fw
RW5hYmxlZDsKICAgICBib29sIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKICAgICBzaXplX3Qg
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOworICAgIEludFNpemUgZGVmYXVsdFRpbGVTaXplOwor
ICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9y
bWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIEND
TGF5ZXJUcmVlSG9zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEx
NzQ1NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDUtMTcgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2Vs
aXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV4cG9zZSBsYXllciB0aWxpbmcgc2l6ZSBvcHRp
b25zIHRvIFdlYlNldHRpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY0MjUKKworICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdGlsaW5nIHBhcmFt
ZXRlcnMgdG8gYmUgc2V0IHZpYSBjb21tYW5kIGxpbmUgZmxhZ3MKKyAgICAgICAgcGFzc2VkIHRv
IHRoZSBSZW5kZXJlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6
Om9wZXJhdG9yIENDU2V0dGluZ3MpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0RGVmYXVsdFRpbGVTaXplKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0TWF4
VW50aWxlZExheWVyU2l6ZSk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAg
ICAgICAoV2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjpkZWZhdWx0VGlsZVNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6Om1h
eFVudGlsZWRMYXllclNpemUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUpOgorCiAyMDEyLTA1LTE3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQ29udmVydCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lIHRvIHVzZSBJbnRlcm5hbFNldHRpbmdzIGludGVyZmFjZQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCShyZXZpc2lvbiAxMTcwODYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYlNldHRpbmdzX2gKIAogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4KIAogI2RlZmluZSBIQVNfV0VCQVVESU9fRkVBVFVS
RV9FTkFCTEUgMQpAQCAtMTQ1LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Vmlld3BvcnRFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdmlld3BvcnRF
bmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0VGlsZVNpemUo
V2ViU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKFdl
YlNpemUpID0gMDsKKwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAko
cmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgV2ViTGF5ZXJUcmVl
Vmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDUwogICAgIHNldHRpbmdzLnBlclRpbGVQYWludGlu
ZyA9IHBlclRpbGVQYWludGluZzsKICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBw
YXJ0aWFsU3dhcEVuYWJsZWQ7CiAgICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVk
ID0gdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOworICAgIHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6
ZSA9IGRlZmF1bHRUaWxlU2l6ZTsKKyAgICBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0g
bWF4VW50aWxlZExheWVyU2l6ZTsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNo
b3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyBhcmVuJ3Qgc3Vw
cG9ydGVkIGN1cnJlbnRseS4KICAgICByZXR1cm4gc2V0dGluZ3M7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHJldmlzaW9uIDExNzA4
NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5n
c0ltcGwoU2V0dGluZwogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAg
LCBtX3Nob3dQYWludFJlY3RzKGZhbHNlKQogICAgICwgbV92aWV3cG9ydEVuYWJsZWQoZmFsc2Up
CisgICAgLCBtX2RlZmF1bHRUaWxlU2l6ZShXZWJTaXplKDI1NiwgMjU2KSkKKyAgICAsIG1fbWF4
VW50aWxlZExheWVyU2l6ZShXZWJTaXplKDUxMiwgNTEyKSkKIHsKICAgICBBU1NFUlQoc2V0dGlu
Z3MpOwogfQpAQCAtNTczLDQgKzU3NSwxNCBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Vmll
d3BvcnRFbmFibGVkCiAgICAgbV92aWV3cG9ydEVuYWJsZWQgPSBlbmFibGVkOwogfQogCit2b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0RGVmYXVsdFRpbGVTaXplKFdlYlNpemUgc2l6ZSkKK3sKKyAg
ICBtX2RlZmF1bHRUaWxlU2l6ZSA9IHNpemU7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRNYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUgc2l6ZSkKK3sKKyAgICBtX21heFVudGlsZWRM
YXllclNpemUgPSBzaXplOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCShyZXZpc2lvbiAxMTcw
ODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNob3dGUFNDb3VudGVyKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGxhdGZvcm1M
YXllclRyZWUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQYWludFJlY3RzKGJvb2wp
OworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0VGlsZVNpemUoV2ViU2l6ZSk7CisgICAgdmly
dHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSk7CiAgICAgdmlydHVhbCB2
b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCk7CkBAIC0xNDQsNiArMTQ2LDggQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nob3dGUFND
b3VudGVyOyB9CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoKSBjb25zdCB7IHJldHVy
biBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsgfQogICAgIGJvb2wgc2hvd1BhaW50UmVjdHMoKSBj
b25zdCB7IHJldHVybiBtX3Nob3dQYWludFJlY3RzOyB9CisgICAgV2ViU2l6ZSBkZWZhdWx0VGls
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUaWxlU2l6ZTsgfQorICAgIFdlYlNpemUg
bWF4VW50aWxlZExheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VW50aWxlZExheWVyU2l6
ZTsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAt
MTUxLDYgKzE1NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJl
ZTsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CiAgICAgYm9vbCBtX3ZpZXdwb3J0RW5hYmxl
ZDsKKyAgICBXZWJTaXplIG1fZGVmYXVsdFRpbGVTaXplOworICAgIFdlYlNpemUgbV9tYXhVbnRp
bGVkTGF5ZXJTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMTcwODYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMjcsNiArMzMyNyw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0
ZWRDb21wb3MKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxl
ZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFydGlhbFN3YXBFbmFibGVkKCk7CiAgICAgICAgIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSBwYWdlKCktPnNl
dHRpbmdzKCktPnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCgpOwogCisgICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5kZWZhdWx0VGlsZVNpemUgPSBzZXR0aW5nc0ltcGwoKS0+ZGVmYXVsdFRp
bGVTaXplKCk7CisgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJT
aXplID0gc2V0dGluZ3NJbXBsKCktPm1heFVudGlsZWRMYXllclNpemUoKTsKKwogICAgICAgICBt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3Jl
YXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142587</attachid>
            <date>2012-05-17 16:49:31 -0700</date>
            <delta_ts>2012-05-17 18:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86425-20120517164930.patch</filename>
            <type>text/plain</type>
            <size>14719</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTE3ICBWYW5n
ZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEV4cG9zZSBsYXllciB0aWxpbmcgc2l6ZSBvcHRpb25zIHRvIFdlYlNldHRpbmdzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQyNQorCisgICAg
ICAgIEFkZGluZyBlbnRyaWVzIGZvciB0aWxlIHNpemUgYW5kIG1heCB1bnRpbGVkIGxheWVyIHNp
emUuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6U2V0dGlu
Z3MpOgorICAgICAgICAoU2V0dGluZ3MpOgorCiAyMDEyLTA1LTE2ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYXIgdGhlIG1fcHJp
dmF0ZSBwb2ludGVyIHdoZW4gZGVzdHJveWluZyBXZWJGaWx0ZXJPcGVyYXRpb25zIHRvIGF2b2lk
IGFzc2VydCBpbiBXZWJQcml2YXRlT3duUHRyCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAkocmV2aXNpb24gMTE3MDg2KQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNp
bmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIK
KyNpbmNsdWRlICJXZWJTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdDsKQEAgLTQzLDcgKzQ0LDYgQEAgY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dDsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0
IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1
YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBwYXJ0
aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChmYWxzZSkKKyAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAy
NTYpKQorICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIp
KQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjgsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxl
ZDsKICAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CisgICAgICAgIFdlYlNp
emUgZGVmYXVsdFRpbGVTaXplOworICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkND
U2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDUtMTcgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGxheWVyIHRpbGluZyBzaXplIG9wdGlv
bnMgdG8gV2ViU2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NjQyNQorCisgICAgICAgIFJlbW92aW5nIGhhcmRjb2RlZCB0aWxlIHNpemUg
YW5kIG1heCB1bnRpbGVkIGxheWVyIHNpemUgZnJvbSBUaWxlZExheWVyQ2hyb21pdW0KKyAgICAg
ICAgYW5kIGluc3RlYWQgaGF2ZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiB2aWEgdGhlIExUSCBDQ1Nl
dHRpbmdzLiBUaGlzIHdpbGwgYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGNvbXBvc2l0b3IgaW5z
dGFuY2VzIHRvIGFkanVzdCB0aWxpbmcgcGFyYW1ldGVycyBhcyBuZWVkZWQgYW5kIG1ha2VzCisg
ICAgICAgIGl0IHBvc3NpYmxlIHRvIHNldCB0aGUgdmFsdWVzIHZpYSBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRU
aWxpbmdPcHRpb24pOgorICAgICAgICBNYWRlIHNvbWUgYWRkaXRpb25hbCBhZGp1c3RtZW50cyB0
byB0aGUgc2luZ2xlLXRpbGUgaGV1cmlzdGljCisgICAgICAgIHRvIG1ha2UgaXQgd29yayBiZXR0
ZXIgd2l0aCBhcmJpdHJhcnkgc2l6ZXMgd2hpbGUgc3RpbGwgYXZvaWRpbmcKKyAgICAgICAgdG8g
Y3JlYXRlIHVucmVhc29uYWJseSBsYXJnZSBsYXllcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgIChDQ1NldHRpbmdzKToK
KwogMjAxMi0wNS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgU291cmNlRnJhbWVzIHdpdGggY29udGVudCBw
cm92aWRlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9u
IDExNzA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0Myw2IEBACiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
IAotLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBsYXllciBh
cmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9IDUx
MjsKLQotLy8gV2hlbiB0aWxpbmcgaXMgZW5hYmxlZCwgdXNlIHRpbGVzIG9mIHRoaXMgc2l6ZToK
LXN0YXRpYyBpbnQgZGVmYXVsdFRpbGVXaWR0aCA9IDI1NjsKLXN0YXRpYyBpbnQgZGVmYXVsdFRp
bGVIZWlnaHQgPSAyNTY7Ci0KIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTEwMSw3ICs5NCw3IEBAIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNo
cm9taXVtKCkKICAgICAsIG1fZGlkUGFpbnQoZmFsc2UpCiAgICAgLCBtX3RpbGluZ09wdGlvbihB
dXRvVGlsZSkKIHsKLSAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRT
aXplKGRlZmF1bHRUaWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0KSwgQ0NMYXllclRpbGluZ0Rh
dGE6Okhhc0JvcmRlclRleGVscyk7CisgICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpj
cmVhdGUoSW50U2l6ZSgpLCBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0K
IAogVGlsZWRMYXllckNocm9taXVtOjp+VGlsZWRMYXllckNocm9taXVtKCkKQEAgLTExNSwxMyAr
MTA4LDI0IEBAIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJvbWkKIAogdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKIHsK
LSAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGlsZVdpZHRoLCBjb250ZW50
Qm91bmRzKCkud2lkdGgoKSksIG1pbihkZWZhdWx0VGlsZUhlaWdodCwgY29udGVudEJvdW5kcygp
LmhlaWdodCgpKSk7CisgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisKKyAgICBjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKTsKKyAgICBj
b25zdCBJbnRTaXplJiBkZWZhdWx0VGlsZVNpemUgPSBzZXR0aW5ncy5kZWZhdWx0VGlsZVNpemU7
CisgICAgY29uc3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzLm1heFVu
dGlsZWRMYXllclNpemU7CisgICAgaW50IGxheWVyV2lkdGggPSBjb250ZW50Qm91bmRzKCkud2lk
dGgoKTsKKyAgICBpbnQgbGF5ZXJIZWlnaHQgPSBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCk7CisK
KyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGlsZVNpemUud2lkdGgoKSwg
bGF5ZXJXaWR0aCksIG1pbihkZWZhdWx0VGlsZVNpemUuaGVpZ2h0KCksIGxheWVySGVpZ2h0KSk7
CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9ucyBsYXJnZSwgb3IgYW55IG9uZSBkaW1l
bnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgotICAgIC8vIGV4dGVuZHMgaW50byBhIHNlY29uZCB0
aWxlLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxvbmcgc2tpbm55IGxheWVycwotICAgIC8v
IChlLmcuIHNjcm9sbGJhcnMpIHRoYXQgYXJlIE54MSB0aWxlcyB0byBtaW5pbWl6ZSB3YXN0ZWQg
dGV4dHVyZSBzcGFjZS4KLSAgICBjb25zdCBib29sIGFueURpbWVuc2lvbkxhcmdlID0gY29udGVu
dEJvdW5kcygpLndpZHRoKCkgPiBtYXhVbnRpbGVkU2l6ZSB8fCBjb250ZW50Qm91bmRzKCkuaGVp
Z2h0KCkgPiBtYXhVbnRpbGVkU2l6ZTsKLSAgICBjb25zdCBib29sIGFueURpbWVuc2lvbk9uZVRp
bGUgPSBjb250ZW50Qm91bmRzKCkud2lkdGgoKSA8PSBkZWZhdWx0VGlsZVdpZHRoIHx8IGNvbnRl
bnRCb3VuZHMoKS5oZWlnaHQoKSA8PSBkZWZhdWx0VGlsZUhlaWdodDsKKyAgICAvLyBleHRlbmRz
IGludG8gYSBzZWNvbmQgdGlsZSBidXQgdGhlIHRvdGFsIGxheWVyIGFyZWEgaXNuJ3QgbGFyZ2Vy
IHRoYW4gdGhhdAorICAgIC8vIG9mIHRoZSBsYXJnZXN0IHBvc3NpYmxlIHVudGlsZWQgbGF5ZXIu
IFRoaXMgaGV1cmlzdGljIGFsbG93cyBmb3IgbG9uZyBza2lubnkgbGF5ZXJzCisgICAgLy8gKGUu
Zy4gc2Nyb2xsYmFycykgdGhhdCBhcmUgTngxIHRpbGVzIHRvIG1pbmltaXplIHdhc3RlZCB0ZXh0
dXJlIHNwYWNlIGJ1dCBzdGlsbCBhdm9pZHMKKyAgICAvLyBjcmVhdGluZyB2ZXJ5IGxhcmdlIHRp
bGVzLgorICAgIGNvbnN0IGJvb2wgYW55RGltZW5zaW9uTGFyZ2UgPSBsYXllcldpZHRoID4gbWF4
VW50aWxlZExheWVyU2l6ZS53aWR0aCgpIHx8IGxheWVySGVpZ2h0ID4gbWF4VW50aWxlZExheWVy
U2l6ZS5oZWlnaHQoKTsKKyAgICBjb25zdCBib29sIGFueURpbWVuc2lvbk9uZVRpbGUgPSAobGF5
ZXJXaWR0aCA8PSBkZWZhdWx0VGlsZVNpemUud2lkdGgoKSB8fCBsYXllckhlaWdodCA8PSBkZWZh
dWx0VGlsZVNpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIChsYXllcldpZHRoICogbGF5ZXJIZWlnaHQpIDw9IChtYXhVbnRpbGVkTGF5ZXJTaXpl
LndpZHRoKCkgKiBtYXhVbnRpbGVkTGF5ZXJTaXplLmhlaWdodCgpKTsKICAgICBjb25zdCBib29s
IGF1dG9UaWxlZCA9IGFueURpbWVuc2lvbkxhcmdlICYmICFhbnlEaW1lbnNpb25PbmVUaWxlOwog
CiAgICAgYm9vbCBpc1RpbGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CShyZXZpc2lvbiAxMTcwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiAr
MTQ4LDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJveHkt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICBtX2xh
eWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CisKKyAgICBtX3NldHRpbmdzLmRlZmF1bHRU
aWxlU2l6ZSA9IEludFNpemUobWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplLndpZHRoKCks
IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihtX3NldHRpbmdzLmRl
ZmF1bHRUaWxlU2l6ZS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKSk7CisgICAgbV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXpl
ID0gSW50U2l6ZShtaW4obV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplLndpZHRoKCksIG1f
cHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4obV9zZXR0aW5ncy5t
YXhVbnRpbGVkTGF5ZXJTaXplLmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkubWF4VGV4dHVyZVNpemUpKTsKIH0KIAogQ0NMYXllclRyZWVIb3N0OjpSZWNyZWF0
ZVJlc3VsdCBDQ0xheWVyVHJlZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgzLDcgKzgzLDkgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAg
LCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxl
ZChmYWxzZSkKICAgICAgICAgICAgICwgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQot
ICAgICAgICAgICAgLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSkgeyB9CisgICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQorICAgICAgICAgICAgLCBk
ZWZhdWx0VGlsZVNpemUoSW50U2l6ZSgyNTYsIDI1NikpCisgICAgICAgICAgICAsIG1heFVudGls
ZWRMYXllclNpemUoSW50U2l6ZSg1MTIsIDUxMikpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRl
UGFpbnRpbmc7CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKQEAgLTk2LDYgKzk4LDggQEAgc3Ry
dWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwogICAgIGJvb2wg
dGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXM7CisgICAgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemU7CisgICAgSW50U2l6ZSBtYXhVbnRp
bGVkTGF5ZXJTaXplOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdz
IHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3NDU1KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAor
MjAxMi0wNS0xNyAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRXhwb3NlIGxheWVyIHRpbGluZyBzaXplIG9wdGlvbnMgdG8gV2ViU2V0dGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQyNQor
CisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aWxpbmcgcGFyYW1ldGVycyB0byBiZSBzZXQgdmlh
IGNvbW1hbmQgbGluZSBmbGFncworICAgICAgICBwYXNzZWQgdG8gdGhlIFJlbmRlcmVyLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dl
YlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5n
cyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0VGlsZVNpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKToK
KyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0lt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OmRlZmF1bHRUaWxlU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6bWF4VW50aWxlZExheWVyU2l6ZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisKIDIwMTItMDUtMTcg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBDb252
ZXJ0IHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUgdG8gdXNlIEludGVy
bmFsU2V0dGluZ3MgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNkZWZpbmUgV2ViU2V0dGluZ3NfaAogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdXNj
cmlwdC5oPgogCiAjZGVmaW5lIEhBU19XRUJBVURJT19GRUFUVVJFX0VOQUJMRSAxCkBAIC0xNDUs
NiArMTQ2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aWV3cG9ydEVuYWJsZWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSkgPSAwOworCiAKIHBy
b3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxMTcwODYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3Bl
cmF0b3IgQ0NTCiAgICAgc2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGVyVGlsZVBhaW50aW5n
OwogICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhcnRpYWxTd2FwRW5hYmxlZDsK
ICAgICBzZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSB0aHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQ7CisgICAgc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gZGVmYXVsdFRpbGVTaXpl
OworICAgIHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUgPSBtYXhVbnRpbGVkTGF5ZXJTaXpl
OwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
IC8gbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5Lgog
ICAgIHJldHVybiBzZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gMTE3MDg2KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsOCBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5nCiAgICAg
LCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAsIG1fc2hvd1BhaW50UmVjdHMo
ZmFsc2UpCiAgICAgLCBtX3ZpZXdwb3J0RW5hYmxlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFRp
bGVTaXplKFdlYlNpemUoMjU2LCAyNTYpKQorICAgICwgbV9tYXhVbnRpbGVkTGF5ZXJTaXplKFdl
YlNpemUoNTEyLCA1MTIpKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC01NzMsNCAr
NTc1LDE0IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRWaWV3cG9ydEVuYWJsZWQKICAgICBt
X3ZpZXdwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXREZWZhdWx0VGlsZVNpemUoV2ViU2l6ZSBzaXplKQoreworICAgIG1fZGVmYXVsdFRpbGVTaXpl
ID0gc2l6ZTsKK30KKwordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1heFVudGlsZWRMYXllclNp
emUoV2ViU2l6ZSBzaXplKQoreworICAgIG1fbWF4VW50aWxlZExheWVyU2l6ZSA9IHNpemU7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQbGF0Zm9ybUxheWVyVHJlZShib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50
aWxlZExheWVyU2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2
aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShib29sKTsKQEAgLTE0NCw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG93
RlBTQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0ZQU0NvdW50ZXI7IH0KICAgICBib29s
IHNob3dQbGF0Zm9ybUxheWVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlOyB9CiAgICAgYm9vbCBzaG93UGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
d1BhaW50UmVjdHM7IH0KKyAgICBXZWJTaXplIGRlZmF1bHRUaWxlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVmYXVsdFRpbGVTaXplOyB9CisgICAgV2ViU2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhVbnRpbGVkTGF5ZXJTaXplOyB9CiAKIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkBAIC0xNTEsNiArMTU1LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wgbV9zaG93
UGFpbnRSZWN0czsKICAgICBib29sIG1fdmlld3BvcnRFbmFibGVkOworICAgIFdlYlNpemUgbV9k
ZWZhdWx0VGlsZVNpemU7CisgICAgV2ViU2l6ZSBtX21heFVudGlsZWRMYXllclNpemU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDExNzA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyNyw2ICszMzI3
LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvcwogICAgICAgICBs
YXllclRyZWVWaWV3U2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFnZSgpLT5zZXR0aW5n
cygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdz
LnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+dGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKCk7CiAKKyAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLmRlZmF1
bHRUaWxlU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5kZWZhdWx0VGlsZVNpemUoKTsKKyAgICAgICAg
bGF5ZXJUcmVlVmlld1NldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUgPSBzZXR0aW5nc0ltcGwo
KS0+bWF4VW50aWxlZExheWVyU2l6ZSgpOworCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250
ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdC
b3JkZXJzKCkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>