<?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>95379</bug_id>
          
          <creation_ts>2012-08-29 14:14:25 -0700</creation_ts>
          <short_desc>[chromium] Register/unregister contents layers with GraphicsLayerChromium</short_desc>
          <delta_ts>2012-08-29 18:33:50 -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>New Bugs</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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>nduca</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707852</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 14:14:25 -0700</bug_when>
    <thetext>[chromium] Register/unregister contents layers with GraphicsLayerChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707882</commentid>
    <comment_count>1</comment_count>
      <attachid>161319</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 14:32:54 -0700</bug_when>
    <thetext>Created attachment 161319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707885</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 14:35:01 -0700</bug_when>
    <thetext>Enne&apos;s the most likely reviewer for this change, but they&apos;re out on vacation for a few days and this is a fairly frequent crasher on dev so could one of you fine folks take a look?  See the ChangeLog and http://code.google.com/p/chromium/issues/detail?id=144951 for context.  I&apos;m still working on producing a good, reliable layout test to hit this case.  This is (sadly) yet another WeakPtr implementation, but this is WebKit where we spend all our time reimplementing WeakPtr.  I&apos;m using the fact that WebLayers have unique, non-repeating IDs to do object identity checks to avoid doing a fully general WeakPtr&lt;T&gt; implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707893</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 14:41:21 -0700</bug_when>
    <thetext>There&apos;s no way that I can check whether this patch is correct.  If no one feels like they know enough to review it, maybe we should land it TBR=enne?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707933</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-08-29 15:21:16 -0700</bug_when>
    <thetext>I&apos;m way out of my depth on this patch, so I&apos;m punting as well ... sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707960</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 15:48:11 -0700</bug_when>
    <thetext>Other approaches:

1.) reorder the RenderLayerBacking calls such that we always get a setContentsTo..() call before any calls that might want to mutate our contentsLayer.

2.) buffer state on GraphicsLayerChromium instead of pushing straight down to m_contentsLayer and only set state when we know we&apos;re in a &quot;steady state&quot;

(1) Seems good generally but tricky to do and tricky to maintain since nobody else would be depending on this particular behavior

(2) Requires inventing a new buffering+sync concept to GraphicsLayerChromium and defining a proper steady state timing. This is plausible but also a bit tricky since it means you have to be really careful about when you can touch certain bits of state and when things are out-of-sync.  We&apos;d also have to keep redundant copies around of various bits of data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707961</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 15:48:14 -0700</bug_when>
    <thetext>Other approaches:

1.) reorder the RenderLayerBacking calls such that we always get a setContentsTo..() call before any calls that might want to mutate our contentsLayer.

2.) buffer state on GraphicsLayerChromium instead of pushing straight down to m_contentsLayer and only set state when we know we&apos;re in a &quot;steady state&quot;

(1) Seems good generally but tricky to do and tricky to maintain since nobody else would be depending on this particular behavior

(2) Requires inventing a new buffering+sync concept to GraphicsLayerChromium and defining a proper steady state timing. This is plausible but also a bit tricky since it means you have to be really careful about when you can touch certain bits of state and when things are out-of-sync.  We&apos;d also have to keep redundant copies around of various bits of data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707975</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-08-29 15:54:37 -0700</bug_when>
    <thetext>Would a &quot;wilLDie&quot; on the layer delegate be helpful here? Iirw, glc sets a delegate on the content ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707985</commentid>
    <comment_count>8</comment_count>
      <attachid>161345</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 15:59:02 -0700</bug_when>
    <thetext>Created attachment 161345
with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707994</commentid>
    <comment_count>9</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-08-29 16:07:23 -0700</bug_when>
    <thetext>Talked offline with James. I&apos;m happy with this approach, all things considered. The key thing is exploding if a person-who-creates-a-new layer forgets to register, which is there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708000</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 16:11:39 -0700</bug_when>
    <thetext>For the record, comment #7&apos;s suggestion is valid.  The question basically boils down to whether it&apos;s better to implement weakptr-type semantics as part of the WebLayer interface - either through a destruction listener or some other mechanism - or keep it all contained in WebCore.  This patch does the latter, and hopefully the ASSERT()s are enough to keep folks in line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708107</commentid>
    <comment_count>11</comment_count>
      <attachid>161345</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-29 17:36:12 -0700</bug_when>
    <thetext>Comment on attachment 161345
with test

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

This is causing crashes, so I&apos;m going to R+ it since the solution looks good to me in general.  I have a few comments, that you&apos;re free to address or not.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:295
&gt; +    clearContentsLayerIfUnregistered();
&gt; +    if (m_contentsLayer)

Can you wrap this common access pattern in some sort of contentsLayerSafe() function or somesuch?

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:513
&gt; +    ASSERT(s_registeredLayerSet);
&gt; +    ASSERT(s_registeredLayerSet-&gt;contains(layer-&gt;id()));

I think the asserts in register and unregister should be CRASHes instead.  If any of these happen, you&apos;ll potentially have bogus content layer pointers lying around that point to deleted memory and that feels like a security issue.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h:118
&gt; -    virtual void setContentsToMedia(PlatformLayer*);
&gt; -    virtual void setContentsToCanvas(PlatformLayer*);
&gt; +    virtual void setContentsToMedia(WebKit::WebLayer*);
&gt; +    virtual void setContentsToCanvas(WebKit::WebLayer*);

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708126</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 18:03:41 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 161345 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161345&amp;action=review
&gt; 
&gt; This is causing crashes, so I&apos;m going to R+ it since the solution looks good to me in general.  I have a few comments, that you&apos;re free to address or not.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:295
&gt; &gt; +    clearContentsLayerIfUnregistered();
&gt; &gt; +    if (m_contentsLayer)
&gt; 
&gt; Can you wrap this common access pattern in some sort of contentsLayerSafe() function or somesuch?

Yup, I think so. Good idea.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:513
&gt; &gt; +    ASSERT(s_registeredLayerSet);
&gt; &gt; +    ASSERT(s_registeredLayerSet-&gt;contains(layer-&gt;id()));
&gt; 
&gt; I think the asserts in register and unregister should be CRASHes instead.  If any of these happen, you&apos;ll potentially have bogus content layer pointers lying around that point to deleted memory and that feels like a security issue.

Sounds good.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h:118
&gt; &gt; -    virtual void setContentsToMedia(PlatformLayer*);
&gt; &gt; -    virtual void setContentsToCanvas(PlatformLayer*);
&gt; &gt; +    virtual void setContentsToMedia(WebKit::WebLayer*);
&gt; &gt; +    virtual void setContentsToCanvas(WebKit::WebLayer*);
&gt; 
&gt; Why?

No reason - I&apos;ll change them back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708172</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 18:33:50 -0700</bug_when>
    <thetext>Committed r127077: &lt;http://trac.webkit.org/changeset/127077&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161319</attachid>
            <date>2012-08-29 14:32:54 -0700</date>
            <delta_ts>2012-08-29 15:58:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95379-20120829143243.patch</filename>
            <type>text/plain</type>
            <size>19167</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlZTNiN2JlNmJjYmVk
NDEzMGE4Yzg3MDMxMjM2Y2U4OTU0YjFjNy4uMThhZDAzOWY4NjFkMWIzNzM3MmVmOTM3MDQ1MTVm
ZTA4NzFhMWQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTI5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZWdpc3Rlci91bnJlZ2lzdGVyIGNvbnRlbnRzIGxheWVycyB3aXRoIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUz
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXZl
cmFsIGNvbXBvc2l0ZWQgbGF5ZXIgdHlwZXMgaW4gV2ViQ29yZSBhcmUgcmVwcmVzZW50ZWQgYnkg
YSBwYWludGVkIGxheWVyIGFuZCBhIGNoaWxkICJjb250ZW50cyBsYXllciIgdGhhdAorICAgICAg
ICByZXByZXNlbnRzIHNvbWUgbm9uLXBhaW50ZWQgc3BlY2lmaWMgY29udGVudCB0eXBlLiBGb3Ig
ZXhhbXBsZSwgYSBjb21wb3NpdGVkIHZpZGVvIGhhcyBhIFdlYkNvcmUtcGFpbnRlZCBsYXllcgor
ICAgICAgICBmb3IgQ1NTIGJhY2tncm91bmQgYW5kIGJvcmRlciBlZmZlY3RzIGFuZCBhIGNoaWxk
IHBsYXRmb3JtIHZpZGVvIGxheWVyIGJhY2tlZCBieSBhIFdlYlZpZGVvTGF5ZXIgd2l0aCB0aGUg
b3V0cHV0CisgICAgICAgIG9mIHRoZSB2aWRlbyBkZWNvZGluZyBwaXBlbGluZS4gQ3Jvc3MtcGxh
dGZvcm0gY29kZSBhc3NvY2lhdGVzIHRoZSBQbGF0Zm9ybUxheWVyIGZyb20gdGhlIHZhcmlvdXMg
Y29tcG9zaXRlZAorICAgICAgICBzeXN0ZW1zIHdpdGggdGhlIHJpZ2h0IEdyYXBoaWNzTGF5ZXIs
IGJ1dCB0aGUgb2JqZWN0IG93bmluZyB0aGUgbGF5ZXIgYW5kIHRoZSBHcmFwaGljc0xheWVyIGhv
bGRpbmcgdGhlIHBvaW50ZXIKKyAgICAgICAgb3RoZXJ3aXNlIGhhdmUgbm8gcmVsYXRpb25zaGlw
LiBUaGlzIG1ha2VzIHNodXRkb3duIGEgYml0IHRyaWNreSBzaW5jZSB0aGUgb2JqZWN0IGRlc3Ry
b3lpbmcgdGhlIGNvbnRlbnRzIGxheWVyCisgICAgICAgIGhhcyBubyBkaXJlY3Qgd2F5IHRvIG5v
dGlmeSB0aGUgR3JhcGhpY3NMYXllciBob2xkaW5nIHRoZSBjb250ZW50cyBsYXllciBwb2ludGVy
IHRoYXQgaXQgaXMgZ29pbmcgYXdheS4gVGhlCisgICAgICAgIEdyYXBoaWNzTGF5ZXIgd2lsbCBi
ZSBub3RpZmllZCBhZnRlciB0aGUgbmV4dCBzdHlsZSByZWNhbGMgdGhhdCBpdHMgY29udGVudHMg
bGF5ZXIgaXMgZ29uZSwgYnV0IG1heSBuZWVkIHRvIGRvCisgICAgICAgIGFueSBudW1iZXIgb2Yg
Ym9va2tlZXBpbmcgb3BlcmF0aW9ucyBiZWZvcmUgdGhhdCBoYXBwZW5zLgorCisgICAgICAgIE9u
IG1vc3QgcGxhdGZvcm1zIHRoZSBQbGF0Zm9ybUxheWVyIGlzIHJlZmNvdW50ZWQsIHNvIHRoZSBH
cmFwaGljc0xheWVyIHNpbXBseSBob2xkcyBhIHJlZiB0byBpdHMgY29udGVudHMgbGF5ZXIKKyAg
ICAgICAgZnJvbSB0aGUgdGltZSBpdCBpcyBvcnBoYW5lZCB1bnRpbCB0aGUgbmV4dCBzdHlsZSBy
ZWNhbGMgYW5kIGNvbXBvc2l0aW5nIHRyZWUgcmVidWlsZC4gSW4gQ2hyb21pdW0sIGhvd2V2ZXIs
CisgICAgICAgIFBsYXRmb3JtTGF5ZXIgaXMgbm90IHJlZmNvdW50ZWQuIFRoaXMgYWRkcyBhbiBl
eHBsaWNpdCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGZvciBsYXllcnMgdGhhdCBtYXkgYmUgY29u
dGVudHMKKyAgICAgICAgbGF5ZXJzLiAgQSBsYXllciBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB3aXRo
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBiZWZvcmUgaXQgY2FuIGJlIHVzZWQgYXMgYSBjb250ZW50
cyBsYXllciAtCisgICAgICAgIHR5cGljYWxseSB0aGlzIGlzIGp1c3QgZG9uZSBhdCBjcmVhdGlv
biAtIGFuZCB1bnJlZ2lzdGVyZWQgYmVmb3JlIGl0IGlzIGRlc3Ryb3llZC4KKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjp+U2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcm9sbGJh
ckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNh
bnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRn
ZTo6fkNhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3
aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6On5EcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpjbGVhckJhY2tncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZWdpc3RlckNvbnRlbnRzTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1bnJlZ2lzdGVyQ29udGVudHNM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQ29u
dGVudHNMYXllcklmVW5yZWdpc3RlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVySXNEcmF3YWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisKIDIwMTItMDgtMjgg
IFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBEbyBub3QgY2xpcCByb290IGxheWVyJ3Mgc3VidHJlZSB0byB2aWV3cG9ydApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBmYjJhNjQ1OTViZWM0MDJjMTkxMzM3NmFkNTljMWI2YWZh
ZDAyZGU3Li4xOTg5NmJlODMzNmJmODdhYzNjMDU4ODgyODJhNzg5ZjY4NTQ3ZWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTI5ICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZWdp
c3Rlci91bnJlZ2lzdGVyIGNvbnRlbnRzIGxheWVycyB3aXRoIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjp+V2ViUGx1Z2luQ29udGFpbmVy
SW1wbCk6CisKIDIwMTItMDgtMjkgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTGluayBoaWdobGlnaHQgc2hvdWxkIGNsZWFy
IG9uIHBhZ2UgbmF2aWdhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHAKaW5kZXggM2IxZDM2YmE3ZTQ2NmMxM2ViMGE4NjRkYTI5NDkyYzFlMDdiMzY5ZC4u
ZjMzMmY1MDQyZjQ3Mjg2MWExM2E3ZTQ4ZmNjZWE2MjM5NTQyNjIwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0v
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgpAQCAtNTYsNyArNTcsMTMgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRl
KCkgeyB9CisgICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpCisgICAgeworICAgICAg
ICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpCisgICAgICAgICAgICBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1faG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyLT5sYXllcigpKTsKKyAgICAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJMYXllcikK
KyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dW5yZWdpc3RlckNvbnRlbnRzTGF5
ZXIobV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLT5sYXllcigpKTsKKyAgICB9CiAKICAgICB2b2lk
IHNldFNjcm9sbExheWVyKFdlYkxheWVyKiBsYXllcikKICAgICB7CkBAIC0xNTcsNiArMTY0LDcg
QEAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGNyZWF0ZVNjcm9sbGJhckxh
eWVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIE93blB0cjxXZWJTY3JvbGxiYXJMYXllcj4g
c2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKG5ldyBX
ZWJLaXQ6OldlYlNjcm9sbGJhckltcGwoc2Nyb2xsYmFyKSwgcGFpbnRlciwgZ2VvbWV0cnkubGVh
a1B0cigpKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVy
KTsKIAorICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVnaXN0ZXJDb250ZW50c0xheWVyKHNj
cm9sbGJhckxheWVyLT5sYXllcigpKTsKICAgICBzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1RvTWVkaWEoc2Nyb2xsYmFyTGF5ZXItPmxheWVyKCkpOwogICAgIHNjcm9sbGJhckdy
YXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXIt
PmxheWVyKCktPnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKaW5kZXggNjE0ZmU0YjRhNDVk
ZjQxZTQyNTJjNWIyYWQyZmQ5YmRjMDllYjllOC4uMTkyYjU4YTM0YzJhNzE1ZWUwMzBlOTQzZDNl
OTc2Y2Q0NThjYjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJHckNvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oPgpAQCAtNzYsMTAgKzc3LDEyIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6
OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwKICAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZSh0aGlzKSk7CiAgICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CiAgICAgbV9s
YXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRp
bmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOworICAgIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6cmVnaXN0ZXJDb250ZW50c0xheWVyKG1fbGF5ZXItPmxheWVyKCkpOwogfQogCiBD
YW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CisgICAgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp1bnJlZ2lzdGVyQ29udGVudHNMYXllcihtX2xheWVyLT5sYXllcigp
KTsKICAgICBDYW52YXMyRExheWVyTWFuYWdlcjo6Z2V0KCkubGF5ZXJUb0JlRGVzdHJveWVkKHRo
aXMpOwogICAgIGlmIChTa0RlZmVycmVkQ2FudmFzKiBkZWZlcnJlZCA9IGRlZmVycmVkQ2FudmFz
KCkpCiAgICAgICAgIGRlZmVycmVkLT5zZXROb3RpZmljYXRpb25DbGllbnQoMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCAwNjgzOWM5NzgwY2UyZmQwMTAxNTBi
NzViMjcwNzIxNWFkMmFlZGNlLi5mMTQ5NTIxMzhlNjE4YmNhMzdmY2Q5YzlhNWZlZjA2MGY2N2Iz
ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmg+CkBAIC0xNjcsMTAgKzE2OCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBtX2RyYXdpbmdC
dWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAg
ICAgIG1fbGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CiAgICAgICAgIG1fbGF5
ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVnaXN0ZXJDb250ZW50c0xheWVyKG1f
bGF5ZXItPmxheWVyKCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkRyYXdpbmdCdWZmZXJQcml2
YXRlKCkKICAgICB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dW5yZWdpc3RlckNv
bnRlbnRzTGF5ZXIobV9sYXllci0+bGF5ZXIoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBwcmVwYXJlVGV4dHVyZShXZWJLaXQ6OldlYlRleHR1cmVVcGRhdGVyJiB1cGRhdGVyKSBP
VkVSUklERQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNzY1ZTQ1
MDk4ZWQyMzIxYTFlNDlhYzJjODFjNTU1ZDE5MzI5NmJiYy4uYjRjZTg4YzhlZDlkZmRmY2YyYTQ2
MjdkOGY4YTI0MjU5NTU3Y2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgotCiAjaW5jbHVkZSA8
cHVibGljL1dlYkFuaW1hdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b24uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgpAQCAtNjYsNiAr
NjUsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xMjksNiArMTI5LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU5hbWVzKCkKICAgICAgICAgU3RyaW5nIGRlYnVn
TmFtZSA9ICJUcmFuc2Zvcm1MYXllciBmb3IgIiArIG1fbmFtZUJhc2U7CiAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwogICAgIH0KKyAgICBjbGVhckNv
bnRlbnRzTGF5ZXJJZlVucmVnaXN0ZXJlZCgpOwogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsK
ICAgICAgICAgU3RyaW5nIGRlYnVnTmFtZSA9ICJDb250ZW50c0xheWVyIGZvciAiICsgbV9uYW1l
QmFzZTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsK
QEAgLTI4OSw3ICsyOTAsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
c3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisKKyAgICBjbGVhckNvbnRlbnRzTGF5ZXJJZlVucmVn
aXN0ZXJlZCgpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNM
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBvcGFxdWUp
CkBAIC00MzEsNiArNDM1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxp
Y2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogeworICAgIGNsZWFyQ29udGVudHNM
YXllcklmVW5yZWdpc3RlcmVkKCk7CiAgICAgaWYgKG1fY29udGVudHNMYXllcikKICAgICAgICAg
bV9jb250ZW50c0xheWVyLT5pbnZhbGlkYXRlKCk7CiB9CkBAIC00NjgsNiArNDczLDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2Up
CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9
IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgewogICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRv
cHRQdHIoV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmVnaXN0ZXJDb250
ZW50c0xheWVyKG1faW1hZ2VMYXllci0+bGF5ZXIoKSk7CiAgICAgICAgICAgICBzZXR1cENvbnRl
bnRzTGF5ZXIobV9pbWFnZUxheWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1fY29udGVudHNM
YXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgICAgICBjaGlsZHJl
bkNoYW5nZWQgPSB0cnVlOwpAQCAtNDgwLDYgKzQ4Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICBpZiAobV9p
bWFnZUxheWVyKSB7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCisgICAg
ICAgICAgICB1bnJlZ2lzdGVyQ29udGVudHNMYXllcihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwog
ICAgICAgICAgICAgbV9pbWFnZUxheWVyLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8g
VGhlIG9sZCBjb250ZW50cyBsYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlz
dC4KQEAgLTQ5MCw2ICs0OTcsMzIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwog
fQogCitzdGF0aWMgSGFzaFNldDxpbnQ+KiBzX3JlZ2lzdGVyZWRMYXllclNldDsKKwordm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVyQ29udGVudHNMYXllcihXZWJMYXllciogbGF5
ZXIpCit7CisgICAgaWYgKCFzX3JlZ2lzdGVyZWRMYXllclNldCkKKyAgICAgICAgc19yZWdpc3Rl
cmVkTGF5ZXJTZXQgPSBuZXcgSGFzaFNldDxpbnQ+OworICAgIEFTU0VSVCghc19yZWdpc3RlcmVk
TGF5ZXJTZXQtPmNvbnRhaW5zKGxheWVyLT5pZCgpKSk7CisgICAgc19yZWdpc3RlcmVkTGF5ZXJT
ZXQtPmFkZChsYXllci0+aWQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
bnJlZ2lzdGVyQ29udGVudHNMYXllcihXZWJMYXllciogbGF5ZXIpCit7CisgICAgQVNTRVJUKHNf
cmVnaXN0ZXJlZExheWVyU2V0KTsKKyAgICBBU1NFUlQoc19yZWdpc3RlcmVkTGF5ZXJTZXQtPmNv
bnRhaW5zKGxheWVyLT5pZCgpKSk7CisgICAgc19yZWdpc3RlcmVkTGF5ZXJTZXQtPnJlbW92ZShs
YXllci0+aWQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpjbGVhckNvbnRl
bnRzTGF5ZXJJZlVucmVnaXN0ZXJlZCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXJJZCB8
fCBzX3JlZ2lzdGVyZWRMYXllclNldC0+Y29udGFpbnMobV9jb250ZW50c0xheWVySWQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOworICAgIG1fY29udGVudHNM
YXllcklkID0gMDsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5ZXIpCiB7CiAgICAgc2V0Q29udGVudHNUbyhDb250
ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7CkBAIC01MDQsNiArNTM3LDggQEAgdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVy
cG9zZSwgV2ViS2l0OjoKIHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwogICAg
IGlmIChsYXllcikgeworICAgICAgICBBU1NFUlQoc19yZWdpc3RlcmVkTGF5ZXJTZXQpOworICAg
ICAgICBBU1NFUlQoc19yZWdpc3RlcmVkTGF5ZXJTZXQtPmNvbnRhaW5zKGxheWVyLT5pZCgpKSk7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJJZCAhPSBsYXllci0+aWQoKSkgewogICAgICAg
ICAgICAgc2V0dXBDb250ZW50c0xheWVyKGxheWVyKTsKICAgICAgICAgICAgIG1fY29udGVudHNM
YXllclB1cnBvc2UgPSBwdXJwb3NlOwpAQCAtNjA2LDYgKzY0MSw4IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogICAgIFdlYkxheWVyKiBjaGlsZEhvc3Qg
PSBtX3RyYW5zZm9ybUxheWVyID8gbV90cmFuc2Zvcm1MYXllci5nZXQoKSA6IG1fbGF5ZXItPmxh
eWVyKCk7CiAgICAgY2hpbGRIb3N0LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCisgICAgY2xlYXJD
b250ZW50c0xheWVySWZVbnJlZ2lzdGVyZWQoKTsKKwogICAgIGlmIChtX3RyYW5zZm9ybUxheWVy
KSB7CiAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllciBmaXJzdC4gRXZlbiBpZiB3ZSBo
YXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBj
b21lcyBiZWhpbmQuCiAgICAgICAgIGNoaWxkSG9zdC0+YWRkQ2hpbGQobV9sYXllci0+bGF5ZXIo
KSk7CkBAIC03NDIsNyArNzc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUxheWVySXNEcmF3YWJsZSgpCiAgICAgLy8gc28gaXQgaXMgb25seSBnaXZlbiBjb250ZW50c1Zp
c2libGUuCiAKICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQobV9kcmF3c0Nv
bnRlbnQgJiYgbV9jb250ZW50c1Zpc2libGUpOwotCisgICAgY2xlYXJDb250ZW50c0xheWVySWZV
bnJlZ2lzdGVyZWQoKTsKICAgICBpZiAobV9jb250ZW50c0xheWVyKQogICAgICAgICBtX2NvbnRl
bnRzTGF5ZXItPnNldERyYXdzQ29udGVudChtX2NvbnRlbnRzVmlzaWJsZSk7CiAKQEAgLTc1Nyw2
ICs3OTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJJc0RyYXdh
YmxlKCkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFja2dyb3Vu
ZENvbG9yKCkKIHsKKyAgICBjbGVhckNvbnRlbnRzTGF5ZXJJZlVucmVnaXN0ZXJlZCgpOwogICAg
IGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTc3NCw2ICs4MTIs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1JlY3QoKQogeworICAg
IGNsZWFyQ29udGVudHNMYXllcklmVW5yZWdpc3RlcmVkKCk7CiAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aAppbmRleCAwNTk1ZmFkMDFiMzMxMDg4MmVhNGJlOTZlMDJjMDg0YzZkOWRkMTljLi4xNGY2NTk0
ZTI5ZmU5NDg0NTRhNWE4YjAwNjlhZjJlNmViMThiOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uaApAQCAtMTEwLDkgKzExMCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKTsKIAorICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKik7CisgICAgc3RhdGljIHZv
aWQgdW5yZWdpc3RlckNvbnRlbnRzTGF5ZXIoV2ViS2l0OjpXZWJMYXllciopOworCiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb01lZGlhKFdlYktpdDo6V2ViTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb0NhbnZhcyhXZWJLaXQ6OldlYkxheWVyKik7CiAgICAgdmlydHVhbCBib29sIGhhc0Nv
bnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJ
bnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUg
dGltZU9mZnNldCk7CkBAIC0xMjUsNyArMTI4LDcgQEAgcHVibGljOgogICAgIC8vIE5leHQgZnVu
Y3Rpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgTGlua0hpZ2hsaWdodENsaWVudCogbGlu
a0hpZ2hsaWdodCgpIHsgcmV0dXJuIG1fbGlua0hpZ2hsaWdodDsgfQogCi0gICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJLaXQ6
OldlYkxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCk7CkBAIC0xNzEsNiAr
MTc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVy
UHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciopOwogICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFdlYktpdDo6V2ViTGF5ZXIqKTsKKyAgICB2b2lkIGNsZWFyQ29udGVudHNMYXllcklmVW5yZWdp
c3RlcmVkKCk7CiAKICAgICBTdHJpbmcgbV9uYW1lQmFzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXgg
NzJlODcxNjM3YjdkZGYyMWRjNmM4ZWM4M2Q0NjNkY2EzZDg1ZWJjMS4uMjZkMmY3MzdmZGU1YTRl
ZmNjMTA5NjNkNGYxYmY1NTc2OTg0NmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMiw2ICsxMiw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC05Nyw2ICs5OCwxMCBAQCBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogI2VuZGlmCiAg
ICAgaWYgKG1faGVscGVyUGx1Z2luKQogICAgICAgICBjbG9zZUhlbHBlclBsdWdpbigpOworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV92aWRlb0xheWVyKQorICAg
ICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1fdmlk
ZW9MYXllci0+bGF5ZXIoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQpAQCAtMTEzLDYgKzExOCw3IEBAIHZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgaWYgKGhhc1Zp
ZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmICFtX3ZpZGVvTGF5ZXIp
IHsKICAgICAgICAgbV92aWRlb0xheWVyID0gYWRvcHRQdHIoV2ViVmlkZW9MYXllcjo6Y3JlYXRl
KHRoaXMpKTsKICAgICAgICAgbV92aWRlb0xheWVyLT5sYXllcigpLT5zZXRPcGFxdWUobV9vcGFx
dWUpOworICAgICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVyQ29udGVudHNMYXll
cihtX3ZpZGVvTGF5ZXItPmxheWVyKCkpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRl
eCA3NWE5N2UwZjZjYzVlNDdhZTI5ZGRhMzAxNWMxNmQ4ZmI3MWEzMWY0Li5jMzE3MTc2YTQxODM1
ZmJhMWVkMTA1NjM0NDYzODM0MjkzMGM1OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTEsNiArNTEsNyBA
QAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdlc3R1cmVFdmVudC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC0zNjgsOCArMzY5LDEwIEBAIHZvaWQg
V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25lZCB0ZXh0
dXJlSWQpCiAKICAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5ZXIpOwogCi0gICAgaWYgKCFtX3Rl
eHR1cmVMYXllcikKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyKSB7CiAgICAgICAgIG1fdGV4dHVy
ZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgR3JhcGhpY3NMYXllckNocm9taXVtOjpyZWdpc3RlckNvbnRlbnRzTGF5ZXIobV90ZXh0
dXJlTGF5ZXItPmxheWVyKCkpOworICAgIH0KICAgICBtX3RleHR1cmVMYXllci0+c2V0VGV4dHVy
ZUlkKHRleHR1cmVJZCk7CiAKICAgICAvLyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdl
IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFyZHdhcmUKQEAgLTM5Miw4ICszOTUsMTAgQEAgdm9p
ZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRo
LAogCiAgICAgQVNTRVJUKCFtX3RleHR1cmVMYXllcik7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNl
TGF5ZXIpCisgICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKSB7CiAgICAgICAgIG1faW9TdXJmYWNl
TGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVyQ29udGVudHNMYXllcihtX2lvU3VyZmFjZUxh
eWVyLT5sYXllcigpKTsKKyAgICB9CiAgICAgbV9pb1N1cmZhY2VMYXllci0+c2V0SU9TdXJmYWNl
UHJvcGVydGllcyhpb1N1cmZhY2VJZCwgV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAv
LyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4g
aGFyZHdhcmUKQEAgLTYyNyw2ICs2MzIsMTMgQEAgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6V2Vi
UGx1Z2luQ29udGFpbmVySW1wbChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWUKIAog
V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6fldlYlBsdWdpbkNvbnRhaW5lckltcGwoKQogeworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV90ZXh0dXJlTGF5ZXIpCisg
ICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dW5yZWdpc3RlckNvbnRlbnRzTGF5ZXIobV90
ZXh0dXJlTGF5ZXItPmxheWVyKCkpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAg
ICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1faW9TdXJm
YWNlTGF5ZXItPmxheWVyKCkpOworI2VuZGlmCisKICAgICBpZiAobV9pc0FjY2VwdGluZ1RvdWNo
RXZlbnRzKQogICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmRpZFJlbW92ZVRvdWNoRXZl
bnRIYW5kbGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161345</attachid>
            <date>2012-08-29 15:59:02 -0700</date>
            <delta_ts>2012-08-29 17:36:10 -0700</delta_ts>
            <desc>with test</desc>
            <filename>bug-95379-20120829155852.patch</filename>
            <type>text/plain</type>
            <size>20414</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlZTNiN2JlNmJjYmVk
NDEzMGE4Yzg3MDMxMjM2Y2U4OTU0YjFjNy4uMjM1ODhlNjBjODgxNjRhYTZkMjYxNDQwNzBmZThl
MmY5MTgzMDE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTI5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
ZWdpc3Rlci91bnJlZ2lzdGVyIGNvbnRlbnRzIGxheWVycyB3aXRoIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUz
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXZl
cmFsIGNvbXBvc2l0ZWQgbGF5ZXIgdHlwZXMgaW4gV2ViQ29yZSBhcmUgcmVwcmVzZW50ZWQgYnkg
YSBwYWludGVkIGxheWVyIGFuZCBhIGNoaWxkICJjb250ZW50cyBsYXllciIgdGhhdAorICAgICAg
ICByZXByZXNlbnRzIHNvbWUgbm9uLXBhaW50ZWQgc3BlY2lmaWMgY29udGVudCB0eXBlLiBGb3Ig
ZXhhbXBsZSwgYSBjb21wb3NpdGVkIHZpZGVvIGhhcyBhIFdlYkNvcmUtcGFpbnRlZCBsYXllcgor
ICAgICAgICBmb3IgQ1NTIGJhY2tncm91bmQgYW5kIGJvcmRlciBlZmZlY3RzIGFuZCBhIGNoaWxk
IHBsYXRmb3JtIHZpZGVvIGxheWVyIGJhY2tlZCBieSBhIFdlYlZpZGVvTGF5ZXIgd2l0aCB0aGUg
b3V0cHV0CisgICAgICAgIG9mIHRoZSB2aWRlbyBkZWNvZGluZyBwaXBlbGluZS4gQ3Jvc3MtcGxh
dGZvcm0gY29kZSBhc3NvY2lhdGVzIHRoZSBQbGF0Zm9ybUxheWVyIGZyb20gdGhlIHZhcmlvdXMg
Y29tcG9zaXRlZAorICAgICAgICBzeXN0ZW1zIHdpdGggdGhlIHJpZ2h0IEdyYXBoaWNzTGF5ZXIs
IGJ1dCB0aGUgb2JqZWN0IG93bmluZyB0aGUgbGF5ZXIgYW5kIHRoZSBHcmFwaGljc0xheWVyIGhv
bGRpbmcgdGhlIHBvaW50ZXIKKyAgICAgICAgb3RoZXJ3aXNlIGhhdmUgbm8gcmVsYXRpb25zaGlw
LiBUaGlzIG1ha2VzIHNodXRkb3duIGEgYml0IHRyaWNreSBzaW5jZSB0aGUgb2JqZWN0IGRlc3Ry
b3lpbmcgdGhlIGNvbnRlbnRzIGxheWVyCisgICAgICAgIGhhcyBubyBkaXJlY3Qgd2F5IHRvIG5v
dGlmeSB0aGUgR3JhcGhpY3NMYXllciBob2xkaW5nIHRoZSBjb250ZW50cyBsYXllciBwb2ludGVy
IHRoYXQgaXQgaXMgZ29pbmcgYXdheS4gVGhlCisgICAgICAgIEdyYXBoaWNzTGF5ZXIgd2lsbCBi
ZSBub3RpZmllZCBhZnRlciB0aGUgbmV4dCBzdHlsZSByZWNhbGMgdGhhdCBpdHMgY29udGVudHMg
bGF5ZXIgaXMgZ29uZSwgYnV0IG1heSBuZWVkIHRvIGRvCisgICAgICAgIGFueSBudW1iZXIgb2Yg
Ym9va2tlZXBpbmcgb3BlcmF0aW9ucyBiZWZvcmUgdGhhdCBoYXBwZW5zLgorCisgICAgICAgIE9u
IG1vc3QgcGxhdGZvcm1zIHRoZSBQbGF0Zm9ybUxheWVyIGlzIHJlZmNvdW50ZWQsIHNvIHRoZSBH
cmFwaGljc0xheWVyIHNpbXBseSBob2xkcyBhIHJlZiB0byBpdHMgY29udGVudHMgbGF5ZXIKKyAg
ICAgICAgZnJvbSB0aGUgdGltZSBpdCBpcyBvcnBoYW5lZCB1bnRpbCB0aGUgbmV4dCBzdHlsZSBy
ZWNhbGMgYW5kIGNvbXBvc2l0aW5nIHRyZWUgcmVidWlsZC4gSW4gQ2hyb21pdW0sIGhvd2V2ZXIs
CisgICAgICAgIFBsYXRmb3JtTGF5ZXIgaXMgbm90IHJlZmNvdW50ZWQuIFRoaXMgYWRkcyBhbiBl
eHBsaWNpdCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGZvciBsYXllcnMgdGhhdCBtYXkgYmUgY29u
dGVudHMKKyAgICAgICAgbGF5ZXJzLiAgQSBsYXllciBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB3aXRo
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBiZWZvcmUgaXQgY2FuIGJlIHVzZWQgYXMgYSBjb250ZW50
cyBsYXllciAtCisgICAgICAgIHR5cGljYWxseSB0aGlzIGlzIGp1c3QgZG9uZSBhdCBjcmVhdGlv
biAtIGFuZCB1bnJlZ2lzdGVyZWQgYmVmb3JlIGl0IGlzIGRlc3Ryb3llZC4KKworICAgICAgICBU
ZXN0czogZmFzdC9jYW52YXMvdHJhbnNmb3JtZWQtY2FudmFzLXJlc2V0Lmh0bWwKKyAgICAgICAg
ICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3RyYW5zZm9y
bWVkLWNhbnZhcy1yZXNldC5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZTo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMyRExheWVyQnJpZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6On5DYW52YXMyRExheWVyQnJpZGdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OkRyYXdp
bmdCdWZmZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRl
Ojp+RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6cmVnaXN0ZXJDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dW5yZWdpc3RlckNvbnRlbnRzTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpjbGVhckNvbnRlbnRzTGF5ZXJJZlVucmVnaXN0ZXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGls
ZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVM
YXllcklzRHJhd2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgIChHcmFw
aGljc0xheWVyQ2hyb21pdW0pOgorCiAyMDEyLTA4LTI4ICBTaGF3biBTaW5naCAgPHNoYXduc2lu
Z2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG8gbm90IGNsaXAgcm9vdCBs
YXllcidzIHN1YnRyZWUgdG8gdmlld3BvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZmIyYTY0NTk1YmVjNDAyYzE5MTMzNzZhZDU5YzFiNmFmYWQwMmRlNy4uMTk4OTZiZTgzMzZiZjg3
YWMzYzA1ODg4MjgyYTc4OWY2ODU0N2ViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMi0wOC0yOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVnaXN0ZXIvdW5yZWdpc3RlciBjb250ZW50
cyBsYXllcnMgd2l0aCBHcmFwaGljc0xheWVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpz
ZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2lu
Q29udGFpbmVySW1wbDo6fldlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorCiAyMDEyLTA4LTI5ICBX
LiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIExpbmsgaGlnaGxpZ2h0IHNob3VsZCBjbGVhciBvbiBwYWdlIG5hdmlnYXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IDNiMWQzNmJh
N2U0NjZjMTNlYjBhODY0ZGEyOTQ5MmMxZTA3YjM2OWQuLmYzMzJmNTA0MmY0NzI4NjFhMTNhN2U0
OGZjY2VhNjIzOTU0MjYyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCIKQEAgLTU2LDcgKzU3LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpIHsgfQorICAgIH5TY3JvbGxpbmdD
b29yZGluYXRvclByaXZhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyKQorICAgICAgICAgICAgR3JhcGhpY3NMYXllckNocm9taXVtOjp1bnJlZ2lzdGVy
Q29udGVudHNMYXllcihtX2hvcml6b250YWxTY3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CisgICAg
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpCisgICAgICAgICAgICBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1fdmVydGljYWxTY3JvbGxiYXJM
YXllci0+bGF5ZXIoKSk7CisgICAgfQogCiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXll
ciogbGF5ZXIpCiAgICAgewpAQCAtMTU3LDYgKzE2NCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFdl
YlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJh
ciwKICAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IHNjcm9sbGJhckxheWVyID0gYWRvcHRQ
dHIoV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShuZXcgV2ViS2l0OjpXZWJTY3JvbGxiYXJJbXBs
KHNjcm9sbGJhciksIHBhaW50ZXIsIGdlb21ldHJ5LmxlYWtQdHIoKSkpOwogICAgIHNjcm9sbGJh
ckxheWVyLT5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7CiAKKyAgICBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnJlZ2lzdGVyQ29udGVudHNMYXllcihzY3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7
CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKHNjcm9sbGJh
ckxheWVyLT5sYXllcigpKTsKICAgICBzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOwogICAgIHNjcm9sbGJhckxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoc2Ny
b2xsYmFyR3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJCcmlkZ2UuY3BwCmluZGV4IDYxNGZlNGI0YTQ1ZGY0MWU0MjUyYzViMmFkMmZkOWJkYzA5
ZWI5ZTguLjE5MmI1OGEzNGMyYTcxNWVlMDMwZTk0M2QzZTk3NmNkNDU4Y2I4Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
R3JDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBv
c2l0b3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KQEAgLTc2
LDEwICs3NywxMiBAQCBDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMyRExheWVyQnJpZGdlKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsCiAgICAgbV9sYXllciA9IGFkb3B0
UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpOwogICAgIG1fbGF5ZXIt
PnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwogICAgIG1fbGF5ZXItPnNldFJhdGVMaW1pdENvbnRl
eHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91
YmxlQnVmZmVyaW5nKTsKKyAgICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVyQ29udGVu
dHNMYXllcihtX2xheWVyLT5sYXllcigpKTsKIH0KIAogQ2FudmFzMkRMYXllckJyaWRnZTo6fkNh
bnZhczJETGF5ZXJCcmlkZ2UoKQogeworICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dW5yZWdp
c3RlckNvbnRlbnRzTGF5ZXIobV9sYXllci0+bGF5ZXIoKSk7CiAgICAgQ2FudmFzMkRMYXllck1h
bmFnZXI6OmdldCgpLmxheWVyVG9CZURlc3Ryb3llZCh0aGlzKTsKICAgICBpZiAoU2tEZWZlcnJl
ZENhbnZhcyogZGVmZXJyZWQgPSBkZWZlcnJlZENhbnZhcygpKQogICAgICAgICBkZWZlcnJlZC0+
c2V0Tm90aWZpY2F0aW9uQ2xpZW50KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1
bS5jcHAKaW5kZXggMDY4MzljOTc4MGNlMmZkMDEwMTUwYjc1YjI3MDcyMTVhZDJhZWRjZS4uZjE0
OTUyMTM4ZTYxOGJjYTM3ZmNkOWM5YTVmZWYwNjBmNjdiM2RmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29t
cG9zaXRvci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oPgpA
QCAtMTY3LDEwICsxNjgsMTIgQEAgcHVibGljOgogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gbV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgICAgICBtX2xheWVyLT5zZXRPcGFxdWUo
IWF0dHJpYnV0ZXMuYWxwaGEpOwogICAgICAgICBtX2xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxw
aGEoYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpOworICAgICAgICBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnJlZ2lzdGVyQ29udGVudHNMYXllcihtX2xheWVyLT5sYXllcigpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5EcmF3aW5nQnVmZmVyUHJpdmF0ZSgpCiAgICAgeworICAgICAgICBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1fbGF5ZXItPmxh
eWVyKCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2Vi
S2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZFUlJJREUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc2NWU0NTA5OGVkMjMyMWExZTQ5YWMyYzgxYzU1
NWQxOTMyOTZiYmMuLmI0Y2U4OGM4ZWQ5ZGZkZmNmMmE0NjI3ZDhmOGEyNDI1OTU1N2NlMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTYsNyArNTYsNiBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgogI2lu
Y2x1ZGUgIlN5c3RlbVRpbWUuaCIKLQogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb24uaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTY2LDYgKzY1LDcgQEAKICNpbmNsdWRlIDxwdWJs
aWMvV2ViU2l6ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtMTI5LDYgKzEyOSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVOYW1lcygpCiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIg
Zm9yICIgKyBtX25hbWVCYXNlOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05h
bWUoZGVidWdOYW1lKTsKICAgICB9CisgICAgY2xlYXJDb250ZW50c0xheWVySWZVbnJlZ2lzdGVy
ZWQoKTsKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05h
bWUgPSAiQ29udGVudHNMYXllciBmb3IgIiArIG1fbmFtZUJhc2U7CiAgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0RGVidWdOYW1lKGRlYnVnTmFtZSk7CkBAIC0yODksNyArMjkwLDEwIEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9y
KCkKIHsKICAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1f
Y29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkp
OworCisgICAgY2xlYXJDb250ZW50c0xheWVySWZVbnJlZ2lzdGVyZWQoKTsKKyAgICBpZiAobV9j
b250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQpAQCAtNDMxLDYgKzQzNSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KCkKIHsKKyAgICBjbGVhckNvbnRlbnRzTGF5ZXJJZlVucmVnaXN0ZXJlZCgpOwog
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+aW52YWxp
ZGF0ZSgpOwogfQpAQCAtNDY4LDYgKzQ3Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlmIChpbWFnZSkgewogICAg
ICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2Up
IHsKICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyQ29udGVudHNMYXllcihtX2ltYWdlTGF5ZXIt
PmxheWVyKCkpOwogICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1faW1hZ2VMYXllci0+
bGF5ZXIoKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllckZvckltYWdlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKQEAgLTQ4
MCw2ICs0ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1faW1hZ2VMYXllcikgewogICAgICAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKIAorICAgICAgICAgICAgdW5yZWdpc3RlckNvbnRl
bnRzTGF5ZXIobV9pbWFnZUxheWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1faW1hZ2VMYXll
ci5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIC8vIFRoZSBvbGQgY29udGVudHMgbGF5ZXIg
d2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCkBAIC00OTAsNiArNDk3LDMyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKIH0KIAorc3RhdGljIEhhc2hTZXQ8aW50
Piogc19yZWdpc3RlcmVkTGF5ZXJTZXQ7CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpy
ZWdpc3RlckNvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghc19yZWdp
c3RlcmVkTGF5ZXJTZXQpCisgICAgICAgIHNfcmVnaXN0ZXJlZExheWVyU2V0ID0gbmV3IEhhc2hT
ZXQ8aW50PjsKKyAgICBBU1NFUlQoIXNfcmVnaXN0ZXJlZExheWVyU2V0LT5jb250YWlucyhsYXll
ci0+aWQoKSkpOworICAgIHNfcmVnaXN0ZXJlZExheWVyU2V0LT5hZGQobGF5ZXItPmlkKCkpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dW5yZWdpc3RlckNvbnRlbnRzTGF5ZXIo
V2ViTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChzX3JlZ2lzdGVyZWRMYXllclNldCk7Cisg
ICAgQVNTRVJUKHNfcmVnaXN0ZXJlZExheWVyU2V0LT5jb250YWlucyhsYXllci0+aWQoKSkpOwor
ICAgIHNfcmVnaXN0ZXJlZExheWVyU2V0LT5yZW1vdmUobGF5ZXItPmlkKCkpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJDb250ZW50c0xheWVySWZVbnJlZ2lzdGVyZWQo
KQoreworICAgIGlmICghbV9jb250ZW50c0xheWVySWQgfHwgc19yZWdpc3RlcmVkTGF5ZXJTZXQt
PmNvbnRhaW5zKG1fY29udGVudHNMYXllcklkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b250ZW50c0xheWVyID0gMDsKKyAgICBtX2NvbnRlbnRzTGF5ZXJJZCA9IDA7Cit9CisKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIq
IGxheWVyKQogewogICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvckNhbnZhcywgbGF5
ZXIpOwpAQCAtNTA0LDYgKzUzNyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRD
b250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6CiB7CiAgICAg
Ym9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAg
QVNTRVJUKHNfcmVnaXN0ZXJlZExheWVyU2V0KTsKKyAgICAgICAgQVNTRVJUKHNfcmVnaXN0ZXJl
ZExheWVyU2V0LT5jb250YWlucyhsYXllci0+aWQoKSkpOwogICAgICAgICBpZiAobV9jb250ZW50
c0xheWVySWQgIT0gbGF5ZXItPmlkKCkpIHsKICAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXll
cihsYXllcik7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsK
QEAgLTYwNiw2ICs2NDEsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hp
bGRMaXN0KCkKICAgICBXZWJMYXllciogY2hpbGRIb3N0ID0gbV90cmFuc2Zvcm1MYXllciA/IG1f
dHJhbnNmb3JtTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLT5sYXllcigpOwogICAgIGNoaWxkSG9zdC0+
cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAorICAgIGNsZWFyQ29udGVudHNMYXllcklmVW5yZWdpc3Rl
cmVkKCk7CisKICAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgewogICAgICAgICAvLyBBZGQgdGhl
IHByaW1hcnkgbGF5ZXIgZmlyc3QuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNo
aWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgogICAgICAgICBj
aGlsZEhvc3QtPmFkZENoaWxkKG1fbGF5ZXItPmxheWVyKCkpOwpAQCAtNzQyLDcgKzc3OSw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUoKQogICAg
IC8vIHNvIGl0IGlzIG9ubHkgZ2l2ZW4gY29udGVudHNWaXNpYmxlLgogCiAgICAgbV9sYXllci0+
bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNp
YmxlKTsKLQorICAgIGNsZWFyQ29udGVudHNMYXllcklmVW5yZWdpc3RlcmVkKCk7CiAgICAgaWYg
KG1fY29udGVudHNMYXllcikKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRl
bnQobV9jb250ZW50c1Zpc2libGUpOwogCkBAIC03NTcsNiArNzk0LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVySXNEcmF3YWJsZSgpCiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpCiB7CisgICAgY2xlYXJD
b250ZW50c0xheWVySWZVbnJlZ2lzdGVyZWQoKTsKICAgICBpZiAoIW1fY29udGVudHNMYXllcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC03NzQsNiArODEyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzVmlkZW8oKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29udGVudHNSZWN0KCkKIHsKKyAgICBjbGVhckNvbnRlbnRzTGF5ZXJJZlVu
cmVnaXN0ZXJlZCgpOwogICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggMDU5NWZhZDAxYjMzMTA4
ODJlYTRiZTk2ZTAyYzA4NGM2ZDlkZDE5Yy4uMTRmNjU5NGUyOWZlOTQ4NDU0YTVhOGIwMDY5YWYy
ZTZlYjE4YjliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTExMCw5
ICsxMTAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNvbnRlbnRzTGF5ZXIo
V2ViS2l0OjpXZWJMYXllciopOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJDb250ZW50c0xh
eWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRm
b3JtTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9y
bUxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShXZWJLaXQ6Oldl
YkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoV2ViS2l0OjpX
ZWJMYXllciopOwogICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50c0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9u
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3Qg
QW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIHRpbWVPZmZzZXQpOwpAQCAtMTI1LDcg
KzEyOCw3IEBAIHB1YmxpYzoKICAgICAvLyBOZXh0IGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHB1cnBv
c2VzLgogICAgIExpbmtIaWdobGlnaHRDbGllbnQqIGxpbmtIaWdobGlnaHQoKSB7IHJldHVybiBt
X2xpbmtIaWdobGlnaHQ7IH0KIAotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJMYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgpOwpAQCAtMTcxLDYgKzE3NCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UsIFdlYktpdDo6V2ViTGF5
ZXIqKTsKICAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKik7Cisg
ICAgdm9pZCBjbGVhckNvbnRlbnRzTGF5ZXJJZlVucmVnaXN0ZXJlZCgpOwogCiAgICAgU3RyaW5n
IG1fbmFtZUJhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDcyZTg3MTYzN2I3ZGRmMjFkYzZjOGVj
ODNkNDYzZGNhM2Q4NWViYzEuLjI2ZDJmNzM3ZmRlNWE0ZWZjYzEwOTYzZDRmMWJmNTU3Njk4NDZk
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgIkF1ZGlvU291
cmNlUHJvdmlkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgpAQCAtOTcsNiArOTgsMTAgQEAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsKCkKICNlbmRpZgogICAgIGlmIChtX2hlbHBlclBsdWdpbikK
ICAgICAgICAgY2xvc2VIZWxwZXJQbHVnaW4oKTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgaWYgKG1fdmlkZW9MYXllcikKKyAgICAgICAgR3JhcGhpY3NMYXllckNocm9t
aXVtOjp1bnJlZ2lzdGVyQ29udGVudHNMYXllcihtX3ZpZGVvTGF5ZXItPmxheWVyKCkpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpuZXR3b3JrU3RhdGVDaGFu
Z2VkKCkKQEAgLTExMyw2ICsxMTgsNyBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cmVhZHlTdGF0ZUNoYW5nZWQoKQogICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92aWRlb0xheWVyKSB7CiAgICAgICAgIG1fdmlkZW9MYXll
ciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fdmlk
ZW9MYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICAgICAgR3JhcGhpY3NM
YXllckNocm9taXVtOjpyZWdpc3RlckNvbnRlbnRzTGF5ZXIobV92aWRlb0xheWVyLT5sYXllcigp
KTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzVhOTdlMGY2Y2M1ZTQ3YWUyOWRk
YTMwMTVjMTZkOGZiNzFhMzFmNC4uYzMxNzE3NmE0MTgzNWZiYTFlZDEwNTYzNDQ2MzgzNDI5MzBj
NTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJHZXN0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgpAQCAtMzY4LDggKzM2OSwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogCiAgICAgQVNTRVJUKCFt
X2lvU3VyZmFjZUxheWVyKTsKIAotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIpCisgICAgaWYgKCFt
X3RleHR1cmVMYXllcikgewogICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6cmVnaXN0ZXJDb250ZW50c0xheWVyKG1fdGV4dHVyZUxheWVyLT5sYXllcigpKTsKKyAg
ICB9CiAgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwogCiAgICAg
Ly8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVu
IGhhcmR3YXJlCkBAIC0zOTIsOCArMzk1LDEwIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKGludCB3aWR0aCwKIAogICAgIEFTU0VSVCghbV90ZXh0
dXJlTGF5ZXIpOwogCi0gICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyKQorICAgIGlmICghbV9pb1N1
cmZhY2VMYXllcikgewogICAgICAgICBtX2lvU3VyZmFjZUxheWVyID0gYWRvcHRQdHIoV2ViSU9T
dXJmYWNlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgR3JhcGhpY3NMYXllckNocm9taXVtOjpy
ZWdpc3RlckNvbnRlbnRzTGF5ZXIobV9pb1N1cmZhY2VMYXllci0+bGF5ZXIoKSk7CisgICAgfQog
ICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJmYWNlSWQs
IFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMg
aXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCkBAIC02MjcsNiArNjMy
LDEzIEBAIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lckltcGwoV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lCiAKIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
On5XZWJQbHVnaW5Db250YWluZXJJbXBsKCkKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyKG1fdGV4dHVyZUxheWVyLT5sYXllcigpKTsK
KyAgICBpZiAobV9pb1N1cmZhY2VMYXllcikKKyAgICAgICAgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1bnJlZ2lzdGVyQ29udGVudHNMYXllcihtX2lvU3VyZmFjZUxheWVyLT5sYXllcigpKTsKKyNl
bmRpZgorCiAgICAgaWYgKG1faXNBY2NlcHRpbmdUb3VjaEV2ZW50cykKICAgICAgICAgbV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy90cmFuc2Zvcm1lZC1jYW52YXMtcmVzZXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvdHJhbnNmb3JtZWQtY2FudmFzLXJl
c2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmQzM2Y3MTgzOGE0OGU0OGY1Yjk3MjlkZjBk
NTU5MDZjYWFhZWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
dHJhbnNmb3JtZWQtY2FudmFzLXJlc2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisgVGVz
dCBwYXNzZXMgaWYgRFJUIGRvZXNuJ3QgY3Jhc2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy90cmFuc2Zvcm1lZC1jYW52YXMtcmVzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3RyYW5zZm9ybWVkLWNhbnZhcy1yZXNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViYTI1
ODgzODI2NjlmODkyMGYyOTgyOTA0MGM4NjI3MTQwNGJiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy90cmFuc2Zvcm1lZC1jYW52YXMtcmVzZXQuaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxjYW52YXMgaWQ9ImNhbiIgd2lkdGg9MjAw
IGhlaWdodD0yNTYgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIj48L2Nh
bnZhcz4KK1Rlc3QgcGFzc2VzIGlmIERSVCBkb2Vzbid0IGNyYXNoLgorPHNjcmlwdD4KK3ZhciBj
YW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY2FuIik7Cit2YXIgY3R4ID0gY2FuLmdldENv
bnRleHQoIjJkIik7CitjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKK2N0eC5maWxsUmVjdCgwLCAw
LCAzMDAsIDMwMCk7Citkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKK2Nhbi53aWR0aCA9IDMwMDsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0Pgo=
</data>
<flag name="review"
          id="172115"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>