<?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>77898</bug_id>
          
          <creation_ts>2012-02-06 13:57:03 -0800</creation_ts>
          <short_desc>DOM mutations should not be delivered on worker threads</short_desc>
          <delta_ts>2012-02-09 02:08:22 -0800</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="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>levin</cc>
    
    <cc>morrita</cc>
    
    <cc>podivilov</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550258</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-06 13:57:03 -0800</bug_when>
    <thetext>DOM mutations should not be delivered on worker threads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550265</commentid>
    <comment_count>1</comment_count>
      <attachid>125704</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-06 14:01:42 -0800</bug_when>
    <thetext>Created attachment 125704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551411</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-07 14:45:01 -0800</bug_when>
    <thetext>Would be best if one of the worker folks would comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551467</commentid>
    <comment_count>3</comment_count>
      <attachid>125704</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-02-07 15:27:41 -0800</bug_when>
    <thetext>Comment on attachment 125704
Patch

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

A quick look:

&gt; Source/WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:86
&gt; +    V8Proxy* proxy = V8Proxy::retrieve(scriptExecutionContext);

It seems instrumentedCallFunction does a lot more then only mutation events delivery. For example, it seems to terminate ongoing IDB transactions...

Also, the shape of the code is not really readable. For a person who didn&apos;t read the bug description, the method of invoking callback here may look mysterious.
Maybe instrumentedCallFunction() can take a scriptExecutionContext or a flag indicating it&apos;s on a worker thread or use page==0 fact to do something different inside, it could be more readable at least?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552415</commentid>
    <comment_count>4</comment_count>
      <attachid>126136</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-08 13:01:47 -0800</bug_when>
    <thetext>Created attachment 126136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552420</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-08 13:04:48 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 125704 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125704&amp;action=review
&gt; 
&gt; A quick look:
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:86
&gt; &gt; +    V8Proxy* proxy = V8Proxy::retrieve(scriptExecutionContext);
&gt; 
&gt; It seems instrumentedCallFunction does a lot more then only mutation events delivery. For example, it seems to terminate ongoing IDB transactions...
&gt; 
&gt; Also, the shape of the code is not really readable. For a person who didn&apos;t read the bug description, the method of invoking callback here may look mysterious.
&gt; Maybe instrumentedCallFunction() can take a scriptExecutionContext or a flag indicating it&apos;s on a worker thread or use page==0 fact to do something different inside, it could be more readable at least?

Agreed that this wasn&apos;t particularly clear, and you&apos;re right that the IDB transactions should still work on Worker threads (their state is kept in a thread-local).  I&apos;ve updated instrumentedCallFunction to take a Frame instead of a Page, and V8RecursionScope to make sure that it&apos;s in a Document context before calling deliverAllMutations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552721</commentid>
    <comment_count>6</comment_count>
      <attachid>126136</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-02-08 18:08:50 -0800</bug_when>
    <thetext>Comment on attachment 126136
Patch

Looks good... Thanks for changes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552768</commentid>
    <comment_count>7</comment_count>
      <attachid>126136</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 19:34:45 -0800</bug_when>
    <thetext>Comment on attachment 126136
Patch

Clearing flags on attachment: 126136

Committed r107170: &lt;http://trac.webkit.org/changeset/107170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552769</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 19:34:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552972</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-09 02:03:34 -0800</bug_when>
    <thetext>It appears that this patch has regressed Dromaeo core eval:
http://webkit-perf.appspot.com/graph.html?#tests=[[42013,2001,3001]]&amp;sel=1328743452190,1328769266825&amp;displayrange=7&amp;datatype=running

The regression doesn&apos;t appear on Lion perf bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552973</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-09 02:04:10 -0800</bug_when>
    <thetext>+webkit gardeners for a potential perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552975</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-09 02:08:22 -0800</bug_when>
    <thetext>Actually never mind. It&apos;s more likely to be caused by http://trac.webkit.org/changeset/107166/trunk/Source/WebKit/chromium/DEPS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125704</attachid>
            <date>2012-02-06 14:01:42 -0800</date>
            <delta_ts>2012-02-08 13:01:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77898-20120206140141.patch</filename>
            <type>text/plain</type>
            <size>3602</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQyZDgwNWE2ZjQ2N2Yy
ODFjYjk5NzRjZWIwODFiMDFkYTY5OGY1Mi4uODJkODAyMDQyMDEzMzZmOTE0NDI0ODg0M2RmNDE5
Zjg2ODU0MTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTA2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTSBtdXRhdGlvbnMgc2hv
dWxkIG5vdCBiZSBkZWxpdmVyZWQgb24gd29ya2VyIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVjhDdXN0b21Wb2lkQ2FsbGJhY2sgY2FuIGJl
IHVzZWQgYm90aCBvbiB0aGUgbWFpbiByZW5kZXIgYW5kIHdvcmtlcgorICAgICAgICB0aHJlYWRz
IChmb3IgZXhhbXBsZSwgYnkgdGhlIEZpbGVTeXN0ZW0gQVBJKS4gIFdoZW4gaXQncyB1c2VkIG9u
IGEKKyAgICAgICAgd29ya2VyIHRocmVhZCwgdGhpcyBjaGFuZ2Ugc2tpcHMgdGhlICJ0YXNrIGZp
bmFsaXphdGlvbiIgd29yaworICAgICAgICAoc3BlY2lmaWNhbGx5IGRlbGl2ZXJpbmcgbXV0YXRp
b24gcmVjb3JkcyB2aWEKKyAgICAgICAgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFs
bE11dGF0aW9ucykgYnkgY2FsbGluZyB0aHJvdWdoIHRoZSBWOAorICAgICAgICBBUEkgZGlyZWN0
bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIFY4UHJveHkuCisKKyAgICAgICAgQWRkZWQgQVNT
RVJUKGlzTWFpblRocmVhZCgpKSBpbiBhIGZldyBwbGFjZXMgdG8gY29uZmlybSB0aGlzIGJlaGF2
aW9yLgorCisgICAgICAgIFNlZSBhbHNvIGh0dHA6Ly9jcmJ1Zy5jb20vMTEyNTg2LCB3aGVyZSB0
aGUgcHJvYmxlbSB3YXMgaW5pdGlhbGx5CisgICAgICAgIHJlcG9ydGVkLgorCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjplbnF1
ZXVlTXV0YXRpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucyk6CisKIDIwMTItMDItMDYgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVlbCBldmVudCBoYW5kbGVyIGNv
dW50IG5vdCB1cGRhdGVkIHdoZW4gYWRkaW5nIGhhbmRsZXJzIHRvIHRoZSB3aW5kb3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxs
YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lk
Q2FsbGJhY2suY3BwCmluZGV4IGUzYTJhMDM3ZGIzNGRlMjQ2ZmVkNGQ4Mjk3NDEwNGRhNWZlYzg3
OTcuLjE1ZDEzOGRiMWZjZDNkYmZlMTI2NWQ2OTY5NGRiZGJmODUwMTQ5YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENh
bGxiYWNrLmNwcApAQCAtODMsOCArODMsMTAgQEAgYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djgKIAog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdGhpc09iamVjdCA9IHY4OjpDb250ZXh0OjpHZXRD
dXJyZW50KCktPkdsb2JhbCgpOwogCi0gICAgUGFnZSogcGFnZSA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpID8gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+cGFnZSgpIDogMDsKLSAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1
bmN0aW9uKHBhZ2UsIGNhbGxiYWNrRnVuY3Rpb24sIHRoaXNPYmplY3QsIGFyZ2MsIGFyZ3YpOwor
ICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IHByb3h5CisgICAgICAg
ID8gcHJveHktPmNhbGxGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uLCB0aGlzT2JqZWN0LCBhcmdj
LCBhcmd2KQorICAgICAgICA6IGNhbGxiYWNrRnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgYXJn
YywgYXJndik7CiAKICAgICBjYWxsYmFja1JldHVyblZhbHVlID0gIXJlc3VsdC5Jc0VtcHR5KCkg
JiYgcmVzdWx0LT5Cb29sZWFuVmFsdWUoKTsKICAgICByZXR1cm4gZXhjZXB0aW9uQ2F0Y2hlci5I
YXNDYXVnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlv
bk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVy
LmNwcAppbmRleCBhN2ViMWExNzQ5ZTQwYTY2M2MwMDk3ODgyNmRkYTRhMTM4NjczMTczLi42MDE1
MzYyN2M1OGY0NDcwMzY2OWNlODhmZmRlZmNkZDczYjJiNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMTUsNiArMTE2LDcgQEAgc3RhdGljIE11dGF0aW9uT2JzZXJ2ZXJT
ZXQmIGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkKIAogdm9pZCBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0
YXRpb24pCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX3JlY29yZHMuYXBw
ZW5kKG11dGF0aW9uKTsKICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZCh0aGlzKTsK
IH0KQEAgLTEzMiw2ICsxMzQsNyBAQCB2b2lkIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2
ZXIoKQogCiB2b2lkIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMo
KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIGJvb2wgZGVsaXZl
cnlJblByb2dyZXNzID0gZmFsc2U7CiAgICAgaWYgKGRlbGl2ZXJ5SW5Qcm9ncmVzcykKICAgICAg
ICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126136</attachid>
            <date>2012-02-08 13:01:47 -0800</date>
            <delta_ts>2012-02-08 19:34:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77898-20120208130146.patch</filename>
            <type>text/plain</type>
            <size>16037</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNjMGNjZjYxNzFhZGNj
M2I2MWUxZTkwOTY1YzMxMjYzYmY1NGQwZi4uYWRlNzhiZjYzOWRiYmNmZWNiMmQ2ZTQyNDY3M2Q5
NTZhMGJmYzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTA4ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTSBtdXRhdGlvbnMgc2hv
dWxkIG5vdCBiZSBkZWxpdmVyZWQgb24gd29ya2VyIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gVjhSZWN1cnNpb25TY29wZSwgb25seSBj
YWxsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMKKyAgICAgICAg
aWYgaW4gYSBEb2N1bWVudCBjb250ZXh0LgorCisgICAgICAgIFRoaXMgaXMgYWNjb21wbGlzaGVk
IHRocm91Z2ggYSBjaGFuZ2UgdG8gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uCisg
ICAgICAgICh3aGljaCBub3cgdGFrZXMgYSBGcmFtZSogaW5zdGVhZCBvZiBhIFBhZ2UqKSwgcmVx
dWlyaW5nIGFuIHVwZGF0ZSB0byBhbGwKKyAgICAgICAgY2FsbGVycyBvZiB0aGF0IGZ1bmN0aW9u
IChhY2NvdW50aW5nIGZvciB0aGUgbWFqb3JpdHkgb2YgZmlsZXMgY2hhbmdlZAorICAgICAgICBp
biB0aGlzIHBhdGNoKS4KKworICAgICAgICBBZGRlZCBBU1NFUlQoaXNNYWluVGhyZWFkKCkpIGlu
IGEgZGVsaXZlckFsbE11dGF0aW9ucyB0byBjb25maXJtIHRoYXQKKyAgICAgICAgaXQncyBubyBs
b25nZXIgY2FsbGVkIG9uIHdvcmtlciB0aHJlYWRzLCBhbmQgaW4gZW5xdWV1ZU11dGF0aW9uUmVj
b3JkLAorICAgICAgICB3aGVyZSB0aGUgc2FtZSBnbG9iYWwgc3RvcmUgb2YgYWN0aXZlIG9ic2Vy
dmVycyBpcyBhY2Nlc3NlZC4KKworICAgICAgICBTZWUgYWxzbyBodHRwOi8vY3JidWcuY29tLzEx
MjU4Niwgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGluaXRpYWxseQorICAgICAgICByZXBvcnRlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDYWxsYmFjazo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZUZpbHRl
ckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpydW5TY3JpcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6
Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOFByb3h5KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVj
dXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhSZWN1cnNpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpWOFJlY3Vyc2lvblNjb3BlKToKKyAgICAgICAgKFY4UmVj
dXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6flY4UmVj
dXJzaW9uU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V2luZG93RXJyb3JIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2luZG93RXJyb3JIYW5kbGVyOjpjYWxsTGlzdGVu
ZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENh
bGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6
CisgICAgICAgICogZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlv
bnMpOgorCiAyMDEyLTAyLTA3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGluc3BlY3RlZCBvYmplY3Qgd3JhcHBlciBzaG91
bGQgYmUgcmVsZWFzZWQgYnkgSW5qZWN0ZWRTY3JpcHQgd2hlbiBwb3BvdmVyIGNsb3NlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4YjRkNTdlMmFmNTYxYTc0OTI4MGY2NDk1NzhmYzU0
ODMzODEwM2ZmLi5hODhmMTg1NWNiMjcxZWIxYzAwNjhhYjA2ODFmNzRiODI1ZTA2MTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTA4ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTSBtdXRhdGlvbnMgc2hv
dWxkIG5vdCBiZSBkZWxpdmVyZWQgb24gd29ya2VyIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNGcm9udGVuZElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kSW1wbDo6ZGlzcGF0
Y2hPbkluc3BlY3RvckZyb250ZW5kKToKKwogMjAxMi0wMi0wNyAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBnZW9tZXRyeSBo
ZWFkZXJzIGluIFBsYXRmb3JtIEFQSSB0byBQbGF0Zm9ybSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IGE4YmRh
MWQ3N2M0M2FlZTZmOGFlNzg0YTQ3MTIyYjhmZjkzZmE3NjcuLjVjOTZiNTY0ZTEzNDIwOWNkNWNh
MmQ1ZGI0ZWJlOWY5YzUwNjE1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIFNjcmlwdFZhbHVl
IFNjcmlwdENhbGxiYWNrOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICBhcmdzW2ldID0g
bV9hcmd1bWVudHNbaV0udjhWYWx1ZSgpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJl
c3VsdCA9IFY4UHJveHk6Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbigwIC8qIHBhZ2UgKi8sIGZ1
bmN0aW9uLCBvYmplY3QsIG1fYXJndW1lbnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IFY4UHJveHk6Omluc3RydW1lbnRlZENhbGxGdW5j
dGlvbigwIC8qIGZyYW1lICovLCBmdW5jdGlvbiwgb2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCks
IGFyZ3MuZ2V0KCkpOwogCiAgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpIHsK
ICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IDJmZWFmNjgxNTllZmNm
MDY3ZTIxNThlNjQ0ZTEyZTc4NmUwOTAyOWIuLjJhNjYzZTg1NWI3ZjZiZmJmNTA5MWJjMjA2NmFm
ZDA1ZWQ1NTMxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Tm9k
ZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBzaG9ydCBWOE5vZGVGaWx0
ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKSBj
b25zdAogICAgIE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFyZ3MgPSBhZG9w
dEFycmF5UHRyKG5ldyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT5bMV0pOwogICAgIGFyZ3NbMF0gPSB0
b1Y4KG5vZGUpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IFY4UHJveHk6
Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbigwIC8qIHBhZ2UgKi8sIGNhbGxiYWNrLCBvYmplY3Qs
IDEsIGFyZ3MuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBWOFBy
b3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oMCAvKiBmcmFtZSAqLywgY2FsbGJhY2ssIG9i
amVjdCwgMSwgYXJncy5nZXQoKSk7CiAKICAgICBpZiAoZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVn
aHQoKSkgewogICAgICAgICBzdGF0ZS0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbkNhdGNoZXIuRXhj
ZXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBkNmFi
MzgxYzJkMGYzYzc3NWRhNzRmODI5YzBiM2Q3ZmVhNTM0NjVjLi4zNzZlMTJmNTExNTIxYTlmZGM0
OGNjZjJhZTVhNjQyMzlmNDRmYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OnJ1
blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCkKICAgICB2ODo6VHJ5Q2F0Y2gg
dHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKICAgICB7Ci0gICAgICAg
IFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGU7CisgICAgICAgIFY4UmVjdXJzaW9uU2Nv
cGUgcmVjdXJzaW9uU2NvcGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IHNjcmlwdC0+UnVuKCk7CiAgICAgfQogCkBAIC00MDQsMTAgKzQwNCwxMCBAQCB2ODo6TG9jYWw8
djg6OlZhbHVlPiBWOFByb3h5OjpjYWxsRnVuY3Rpb24odjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGZ1bmN0aW9uLCB2OAogewogICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0aGVyZWZvcmUgU2NyaXB0
Q29udHJvbGxlciBhbmQgVjhQcm94eSkgYWxpdmUuCiAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0
KGZyYW1lKCkpOwotICAgIHJldHVybiBWOFByb3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24o
bV9mcmFtZS0+cGFnZSgpLCBmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3MpOworICAgIHJl
dHVybiBWOFByb3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oZnJhbWUoKSwgZnVuY3Rpb24s
IHJlY2VpdmVyLCBhcmdjLCBhcmdzKTsKIH0KIAotdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94
eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKFBhZ2UqIHBhZ2UsIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10pCit2ODo6TG9jYWw8djg6OlZhbHVlPiBW
OFByb3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oRnJhbWUqIGZyYW1lLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIs
IGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1tdKQogewogICAgIFY4R0NDb250
cm9sbGVyOjpjaGVja01lbW9yeVVzYWdlKCk7CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2ODo6TG9j
YWw8djg6OlZhbHVlPiBWOFByb3h5OjppbnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oUGFnZSogcGFn
ZSwgdjg6OkhhbmRsZTx2OAogICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhF
eGNlZWRlZCgpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZTsK
LSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkgeworICAg
IGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpICYmIGZyYW1lKSB7
CiAgICAgICAgIFN0cmluZyByZXNvdXJjZU5hbWUoInVuZGVmaW5lZCIpOwogICAgICAgICBpbnQg
bGluZU51bWJlciA9IDE7CiAgICAgICAgIHY4OjpTY3JpcHRPcmlnaW4gb3JpZ2luID0gZnVuY3Rp
b24tPkdldFNjcmlwdE9yaWdpbigpOwpAQCAtNDIzLDEyICs0MjMsMTIgQEAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKFBhZ2UqIHBhZ2UsIHY4
OjpIYW5kbGU8djgKICAgICAgICAgICAgIHJlc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhv
cmlnaW4uUmVzb3VyY2VOYW1lKCkpOwogICAgICAgICAgICAgbGluZU51bWJlciA9IGZ1bmN0aW9u
LT5HZXRTY3JpcHRMaW5lTnVtYmVyKCkgKyAxOwogICAgICAgICB9Ci0gICAgICAgIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihwYWdlLCByZXNvdXJj
ZU5hbWUsIGxpbmVOdW1iZXIpOworICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxDYWxsRnVuY3Rpb24oZnJhbWUtPnBhZ2UoKSwgcmVzb3VyY2VOYW1lLCBsaW5l
TnVtYmVyKTsKICAgICB9CiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CiAgICAg
ewotICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIHJlY3Vyc2lvblNjb3BlOworICAgICAgICBWOFJl
Y3Vyc2lvblNjb3BlIHJlY3Vyc2lvblNjb3BlKGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAw
KTsKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwocmVjZWl2ZXIsIGFyZ2MsIGFyZ3Mp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDE3NmE4NGQ0
MzIxN2NjNWQzMGExMzljZjQ4ZDUyYTdlNDZjZGEyYTUuLmZlNDk1NjNjYTUyMjM0NTg5MDUzMzM5
ZjA4ODQxMWFjYzUyYWQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAg
LTU3LDcgKzU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsK
ICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFBhZ2U7CiAgICAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2Rl
OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAtMTYyLDcgKzE2MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0aW9uKHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgaW50IGFyZ2Ms
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAgICAgICAgIC8vIGNhbGwgdGhlIGZ1
bmN0aW9uIHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMgYW5kIHJlcG9ydCB0
aW1lcyB0byBEZXZUb29scy4KLSAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGlu
c3RydW1lbnRlZENhbGxGdW5jdGlvbihQYWdlKiwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3NbXSk7CisgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbnN0
cnVtZW50ZWRDYWxsRnVuY3Rpb24oRnJhbWUqLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJnc1tdKTsKIAogICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBhcyBjb25zdHJ1
Y3RvciB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFJlY3Vyc2lvblNjb3BlLmNwcAppbmRleCAzNTY0ZmNjZmZiZTc0ZWE1MzRmNWQ5MGZjYmVh
M2Q0ZjA4ODEyOTFlLi5jYWQ3NDk4YzY3NmI3OWNkM2Y2NzBiYjY3YTNiZTcyYjkxYzhjYzUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcApA
QCAtMzIsMTEgKzMyLDEyIEBACiAjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogCiAjaW5j
bHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBWOFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNj
cmlwdENvbnRleHQoKQordm9pZCBWOFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogSW5z
dHJ1bWVudCBhbnkgd29yayB0aGF0IHRha2VzIHBsYWNlIHdoZW4gc2NyaXB0IGV4aXRzIHRvIGMr
KyAoZS5nLiBNdXRhdGlvbiBPYnNlcnZlcnMpLgogCkBAIC00OCw3ICs0OSw4IEBAIHZvaWQgVjhS
ZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCkKICNlbmRpZgogCiAjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykKLSAgICBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpkZWxp
dmVyQWxsTXV0YXRpb25zKCk7CisgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVu
dCgpKQorICAgICAgICBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25z
KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhSZWN1cnNpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNp
b25TY29wZS5oCmluZGV4IDM4YWFlODUwZWI0ZmE5MWRjMTAzYTNiMzkzY2M1YmJiZWJiNGEyNjAu
LjZjZmJiYWIxZWNlOWUxOTJhYzRjNzAzYjQxYWExNjcxZjgzMzlhNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKQEAgLTM1LDIwICszNSwyOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisKIGNsYXNzIFY4UmVjdXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFY4
UmVjdXJzaW9uU2NvcGUpOwogcHVibGljOgotICAgIFY4UmVjdXJzaW9uU2NvcGUoKSB7IFY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmluY3JlbWVudFJlY3Vyc2lvbkxldmVsKCk7
IH0KKyAgICBleHBsaWNpdCBWOFJlY3Vyc2lvblNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5pbmNyZW1lbnRSZWN1cnNpb25MZXZl
bCgpOworICAgIH0KKwogICAgIH5WOFJlY3Vyc2lvblNjb3BlKCkKICAgICB7CiAgICAgICAgIGlm
ICghVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZGVjcmVtZW50UmVjdXJzaW9u
TGV2ZWwoKSkKLSAgICAgICAgICAgIGRpZExlYXZlU2NyaXB0Q29udGV4dCgpOworICAgICAgICAg
ICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KG1fY29udGV4dCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IGludCByZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9p
ZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMZWF2ZVNjcmlw
dENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXaW5kb3dFcnJvckhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXaW5kb3dFcnJvckhhbmRsZXIuY3BwCmlu
ZGV4IDc5N2M2MjRlMGQxNmIzNGRmZjg0ODhlMjRkNzU1ZjgxZTJhNThkZWQuLjIzNzk3MjNjODE0
ZTczMTc3MjdkODRlNDEzMTU4YmNjYmQ3NDFiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V2luZG93RXJyb3JIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdpbmRvd0Vycm9ySGFuZGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXaW5kb3dFcnJvckhhbmRsZXI6OmNhbGxMaXN0ZW5lckZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkMKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBh
cmFtZXRlcnNbM10gPSB7IHY4U3RyaW5nKGVycm9yRXZlbnQtPm1lc3NhZ2UoKSksIHY4U3RyaW5n
KGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpLCB2ODo6SW50ZWdlcjo6TmV3KGVycm9yRXZlbnQtPmxp
bmVubygpKSB9OwogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgICAgIHRyeUNh
dGNoLlNldFZlcmJvc2UodHJ1ZSk7Ci0gICAgICAgIHJldHVyblZhbHVlID0gVjhQcm94eTo6aW5z
dHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKDAgLyogcGFnZSAqLywgY2FsbEZ1bmN0aW9uLCB0aGlzVmFs
dWUsIDMsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm5WYWx1ZSA9IFY4UHJveHk6Omluc3Ry
dW1lbnRlZENhbGxGdW5jdGlvbigwIC8qIGZyYW1lICovLCBjYWxsRnVuY3Rpb24sIHRoaXNWYWx1
ZSwgMywgcGFyYW1ldGVycyk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRD
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suY3BwCmluZGV4IGUzYTJhMDM3ZGIzNGRlMjQ2ZmVkNGQ4Mjk3NDEwNGRhNWZl
Yzg3OTcuLmRhNDI3NTAxNWRhMGY0YTZhODkyNmY1MmE1NDg1ODljOWVjODVmOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9p
ZENhbGxiYWNrLmNwcApAQCAtODMsOCArODMsOCBAQCBib29sIGludm9rZUNhbGxiYWNrKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2OAog
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0aGlzT2JqZWN0ID0gdjg6OkNvbnRleHQ6Okdl
dEN1cnJlbnQoKS0+R2xvYmFsKCk7CiAKLSAgICBQYWdlKiBwYWdlID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgPyBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5wYWdlKCkgOiAwOwotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBWOFByb3h5OjppbnN0cnVtZW50ZWRDYWxs
RnVuY3Rpb24ocGFnZSwgY2FsbGJhY2tGdW5jdGlvbiwgdGhpc09iamVjdCwgYXJnYywgYXJndik7
CisgICAgRnJhbWUqIGZyYW1lID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCAmJiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgPyBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgpIDogMDsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKGZyYW1lLCBjYWxs
YmFja0Z1bmN0aW9uLCB0aGlzT2JqZWN0LCBhcmdjLCBhcmd2KTsKIAogICAgIGNhbGxiYWNrUmV0
dXJuVmFsdWUgPSAhcmVzdWx0LklzRW1wdHkoKSAmJiByZXN1bHQtPkJvb2xlYW5WYWx1ZSgpOwog
ICAgIHJldHVybiBleGNlcHRpb25DYXRjaGVyLkhhc0NhdWdodCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKaW5kZXggYTEyNmRkMGJmMDdiYjhhYTAyZmRlYWJmYjVmZGM3YmJhNDc4NjhiYy4u
MGI1ZGI5ODYyNDE5NjhhYWQ4ZDk5NzBhZjVhYjMwMmFiZWE3MzkwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFN0cmluZyBWOEN1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W2FyZ2NdID0geyB2OFN0cmluZyhwcmVmaXgpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gbG9va3VwTmFtZXNwYWNlVVJJRnVu
Yy5Jc0VtcHR5KCkgPyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QobV9yZXNvbHZlcikg
OiBsb29rdXBOYW1lc3BhY2VVUklGdW5jOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJl
dHZhbCA9IFY4UHJveHk6Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbigwIC8qIHBhZ2UgKi8sIGZ1
bmN0aW9uLCBtX3Jlc29sdmVyLCBhcmdjLCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmV0dmFsID0gVjhQcm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKDAgLyogZnJhbWUg
Ki8sIGZ1bmN0aW9uLCBtX3Jlc29sdmVyLCBhcmdjLCBhcmd2KTsKIAogICAgIC8vIEVhdCBleGNl
cHRpb25zIGZyb20gbmFtZXNwYWNlIHJlc29sdmVyIGFuZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5n
LiBUaGlzIHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgTkFNRVNQQUNFX0VSUi4KICAgICBpZiAodHJ5
X2NhdGNoLkhhc0NhdWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9u
T2JzZXJ2ZXIuY3BwCmluZGV4IGE3ZWIxYTE3NDllNDBhNjYzYzAwOTc4ODI2ZGRhNGExMzg2NzMx
NzMuLjYwMTUzNjI3YzU4ZjQ0NzAzNjY5Y2U4OGZmZGVmY2RkNzNiMmI0MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExNSw2ICsxMTYsNyBAQCBzdGF0aWMgTXV0YXRpb25P
YnNlcnZlclNldCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogCiB2b2lkIFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPiBtdXRhdGlvbikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fcmVj
b3Jkcy5hcHBlbmQobXV0YXRpb24pOwogICAgIGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkuYWRk
KHRoaXMpOwogfQpAQCAtMTMyLDYgKzEzNCw3IEBAIHZvaWQgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6ZGVsaXZlcigpCiAKIHZvaWQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11
dGF0aW9ucygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxpdmVyeUluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICBpZiAoZGVsaXZlcnlJblByb2dyZXNz
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKaW5kZXggYzY1OGNhMGNhN2RkOGIzZmQ0MzE3
NzA5ZmIxZDEyNGYzODQyZWUyMS4uZGMxMjZmMGY1NWQ1NWRkOGZlNmZhZTVlZDZkMmZhYzVkMmQy
YzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNG
cm9udGVuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzRnJvbnRlbmRJbXBsLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgV2ViRGV2VG9vbHNG
cm9udGVuZEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJTdHJpbmcm
IG1lc3NhCiAgICAgYXJncy5hcHBlbmQoVG9WOFN0cmluZyhtZXNzYWdlKSk7CiAgICAgdjg6OlRy
eUNhdGNoIHRyeUNhdGNoOwogICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7Ci0gICAgVjhQ
cm94eTo6aW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKGZyYW1lLT5mcmFtZSgpLT5wYWdlKCksIGZ1
bmN0aW9uLCBpbnNwZWN0b3JCYWNrZW5kLCBhcmdzLnNpemUoKSwgYXJncy5kYXRhKCkpOworICAg
IFY4UHJveHk6Omluc3RydW1lbnRlZENhbGxGdW5jdGlvbihmcmFtZS0+ZnJhbWUoKSwgZnVuY3Rp
b24sIGluc3BlY3RvckJhY2tlbmQsIGFyZ3Muc2l6ZSgpLCBhcmdzLmRhdGEoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>