<?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>172067</bug_id>
          
          <creation_ts>2017-05-12 21:06:47 -0700</creation_ts>
          <short_desc>Drop uses of PassRefPtr in WebKit/win</short_desc>
          <delta_ts>2017-05-13 10:33:59 -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>WebKit Website</component>
          <version>WebKit 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>jond</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>pvollan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308261</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 21:06:47 -0700</bug_when>
    <thetext>Drop uses of PassRefPtr in WebKit/win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308265</commentid>
    <comment_count>1</comment_count>
      <attachid>310009</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 21:31:42 -0700</bug_when>
    <thetext>Created attachment 310009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308277</commentid>
    <comment_count>2</comment_count>
      <attachid>310013</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 22:33:10 -0700</bug_when>
    <thetext>Created attachment 310013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308296</commentid>
    <comment_count>3</comment_count>
      <attachid>310018</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 08:39:01 -0700</bug_when>
    <thetext>Created attachment 310018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308301</commentid>
    <comment_count>4</comment_count>
      <attachid>310018</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 10:21:06 -0700</bug_when>
    <thetext>Comment on attachment 310018
Patch

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

r=me with a nit.

&gt; Source/WebKit/win/Plugins/PluginDatabase.cpp:528
&gt; +        auto package = PluginPackage::createPackageFromCache(path, lastModified, name, desc, mimeDesc);

This becomes Ref&lt;&gt;, so the following `package &amp;&amp; ...`&apos;s meaning is changed. We can drop `package` boolean check, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308302</commentid>
    <comment_count>5</comment_count>
      <attachid>310018</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 10:31:55 -0700</bug_when>
    <thetext>Comment on attachment 310018
Patch

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

&gt;&gt; Source/WebKit/win/Plugins/PluginDatabase.cpp:528
&gt;&gt; +        auto package = PluginPackage::createPackageFromCache(path, lastModified, name, desc, mimeDesc);
&gt; 
&gt; This becomes Ref&lt;&gt;, so the following `package &amp;&amp; ...`&apos;s meaning is changed. We can drop `package` boolean check, right?

Right. This should not even build. It seems this code is disabled at build time on our windows bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308303</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-13 10:33:35 -0700</bug_when>
    <thetext>Committed r216823: &lt;http://trac.webkit.org/changeset/216823&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310009</attachid>
            <date>2017-05-12 21:31:42 -0700</date>
            <delta_ts>2017-05-12 22:33:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172067-20170512213141.patch</filename>
            <type>text/plain</type>
            <size>46795</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmYwZGM1MDhm
MTU3YTM3MzA4ZTQ0NWRkMTgwZjkzNDBmZjQ4NGExOS4uMGMxMzc5ZjkxZDBkMmQ2Mjk3NDk3NGE4
YjI5YzZjMTE1ZGY0OWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCB1
c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUV2ZW50OjpET01FdmVudCk6CisgICAgICAgIChET01FdmVudDo6Y3JlYXRlSW5zdGFuY2Up
OgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoKKyAgICAgICAgKERPTVVJRXZlbnQ6OkRP
TVVJRXZlbnQpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6RE9NS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpET01Nb3VzZUV2ZW50KToKKyAgICAgICAgKERPTU11
dGF0aW9uRXZlbnQ6OkRPTU11dGF0aW9uRXZlbnQpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVu
dDo6RE9NT3ZlcmZsb3dFdmVudCk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpET01XaGVlbEV2
ZW50KToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2th
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlRnJvbUNhY2hl
KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyk6CisgICAgICAgIChXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5
QmFnLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAg
ICAgKiBXZWJBcmNoaXZlLmg6CisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkJhY2tG
b3J3YXJkTGlzdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNw
cDoKKyAgICAgICAgKEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VtYmVkZGVkV2lkZ2V0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVs
ZW1lbnQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBv
bGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICog
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKToKKyAgICAgICAg
KiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICogV2ViSGlzdG9yeUl0
ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKToKKyAgICAg
ICAgKFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0Rm9ybURhdGEpOgorICAgICAgICAoV2ViTXV0YWJsZVVS
TFJlcXVlc3Q6OmZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5oOgor
ICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJTY3JpcHRX
b3JsZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQpOgorICAg
ICAgICAoV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJTY3Jp
cHRXb3JsZC5oOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcik6CisgICAgICAgIChXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpzZXRGdWxsU2NyZWVuRWxlbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy5oOgorCiAyMDE3LTA1LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXggYWQ4NzY2YjMxYjU2ODNhNjlj
ZTU0NzViZjc3MDRiY2EzZGM4MzZkNC4uMDU4NThiMTMxN2JjNThkMGI4ZDUyM2RjOWE3YWYwOGUx
NDU3YjYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKQEAgLTg4LDE2
ICs4OCwxNiBAQCBSZWY8V2ViRXZlbnRMaXN0ZW5lcj4gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KElET01FdmVudExpc3RlbmVyKiBkKQogCiAvLyBET01FdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLURPTUV2
ZW50OjpET01FdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKQorRE9NRXZlbnQ6OkRP
TUV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJiBlKQogewotICAgIG1fZXZlbnQgPSBlOwor
ICAgIG1fZXZlbnQgPSBXVEZNb3ZlKGUpOwogfQogCiBET01FdmVudDo6fkRPTUV2ZW50KCkKIHsK
IH0KIAotSURPTUV2ZW50KiBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJD
b3JlOjpFdmVudD4gZSkKK0lET01FdmVudCogRE9NRXZlbnQ6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpFdmVudD4mJiBlKQogewogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xMDcsMzYgKzEwNywzNiBAQCBJRE9NRXZlbnQqIERPTUV2ZW50OjpjcmVhdGVJ
bnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKQogCiAgICAgc3dpdGNoIChlLT5l
dmVudEludGVyZmFjZSgpKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpLZXlib2FyZEV2ZW50SW50ZXJm
YWNlVHlwZTogewotICAgICAgICBET01LZXlib2FyZEV2ZW50KiBuZXdFdmVudCA9IG5ldyBET01L
ZXlib2FyZEV2ZW50KGUpOworICAgICAgICBET01LZXlib2FyZEV2ZW50KiBuZXdFdmVudCA9IG5l
dyBET01LZXlib2FyZEV2ZW50KFdURk1vdmUoZSkpOwogICAgICAgICBociA9IG5ld0V2ZW50LT5R
dWVyeUludGVyZmFjZShJSURfSURPTUtleWJvYXJkRXZlbnQsICh2b2lkKiopJmRvbUV2ZW50KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudEludGVy
ZmFjZVR5cGU6IHsKLSAgICAgICAgRE9NTW91c2VFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NTW91
c2VFdmVudChlKTsKKyAgICAgICAgRE9NTW91c2VFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NTW91
c2VFdmVudChXVEZNb3ZlKGUpKTsKICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZh
Y2UoSUlEX0lET01Nb3VzZUV2ZW50LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIFdlYkNvcmU6Ok11dGF0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOiB7
Ci0gICAgICAgIERPTU11dGF0aW9uRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU11dGF0aW9uRXZl
bnQoZSk7CisgICAgICAgIERPTU11dGF0aW9uRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU11dGF0
aW9uRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAgIGhyID0gbmV3RXZlbnQtPlF1ZXJ5SW50ZXJm
YWNlKElJRF9JRE9NTXV0YXRpb25FdmVudCwgKHZvaWQqKikmZG9tRXZlbnQpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJDb3JlOjpPdmVyZmxvd0V2ZW50SW50ZXJmYWNlVHlw
ZTogewotICAgICAgICBET01PdmVyZmxvd0V2ZW50KiBuZXdFdmVudCA9IG5ldyBET01PdmVyZmxv
d0V2ZW50KGUpOworICAgICAgICBET01PdmVyZmxvd0V2ZW50KiBuZXdFdmVudCA9IG5ldyBET01P
dmVyZmxvd0V2ZW50KFdURk1vdmUoZSkpOwogICAgICAgICBociA9IG5ld0V2ZW50LT5RdWVyeUlu
dGVyZmFjZShJSURfSURPTU92ZXJmbG93RXZlbnQsICh2b2lkKiopJmRvbUV2ZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViQ29yZTo6V2hlZWxFdmVudEludGVyZmFjZVR5
cGU6IHsKLSAgICAgICAgRE9NV2hlZWxFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NV2hlZWxFdmVu
dChlKTsKKyAgICAgICAgRE9NV2hlZWxFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NV2hlZWxFdmVu
dChXVEZNb3ZlKGUpKTsKICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlE
X0lET01XaGVlbEV2ZW50LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoZS0+aXNVSUV2ZW50KCkpIHsKLSAgICAgICAg
ICAgIERPTVVJRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTVVJRXZlbnQoZSk7CisgICAgICAgICAg
ICBET01VSUV2ZW50KiBuZXdFdmVudCA9IG5ldyBET01VSUV2ZW50KFdURk1vdmUoZSkpOwogICAg
ICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01VSUV2ZW50LCAo
dm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBET01FdmVu
dCogbmV3RXZlbnQgPSBuZXcgRE9NRXZlbnQoZSk7CisgICAgICAgICAgICBET01FdmVudCogbmV3
RXZlbnQgPSBuZXcgRE9NRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAgICAgICBociA9IG5ld0V2
ZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUV2ZW50LCAodm9pZCoqKSZkb21FdmVudCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHND
bGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKaW5kZXggN2Rm
ODEzYjgwMzA3NDEwY2RmYTVjODdiNWZiYjQ2NTA3NWE0OTEwMy4uM2I1M2I1ZWIzZjZiM2UwNTNi
MDU3MjQzMmUxOTBmMmQzYTcwNzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9N
RXZlbnRzQ2xhc3Nlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogLy8ge0FDM0QxQkMzLTQ5NzYtNDQzMS04QTE5
LTQ4MTJDNUVGRTM5Q30KQEAgLTEwOSw5ICsxMDgsOSBAQCBwdWJsaWM6CiBjbGFzcyBET01FdmVu
dCA6IHB1YmxpYyBET01PYmplY3QsIHB1YmxpYyBJRE9NRXZlbnQKIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgSURPTUV2ZW50KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50
PiBlKTsKKyAgICBzdGF0aWMgSURPTUV2ZW50KiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6RXZlbnQ+JiYpOwogcHJvdGVjdGVkOgotICAgIERPTUV2ZW50KFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RXZlbnQ+IGUpOworICAgIERPTUV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJik7CiAg
ICAgfkRPTUV2ZW50KCk7CiAKIHB1YmxpYzoKQEAgLTE4Myw3ICsxODIsOSBAQCBwcm90ZWN0ZWQ6
CiBjbGFzcyBET01VSUV2ZW50IDogcHVibGljIERPTUV2ZW50LCBwdWJsaWMgSURPTVVJRXZlbnQK
IHsKIHB1YmxpYzoKLSAgICBET01VSUV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUp
IDogRE9NRXZlbnQoZSkge30KKyAgICBET01VSUV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4m
JiBlKQorICAgICAgICA6IERPTUV2ZW50KFdURk1vdmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJ
VW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBA
IC0yOTgsNyArMjk5LDkgQEAgcHVibGljOgogY2xhc3MgRE9NS2V5Ym9hcmRFdmVudCA6IHB1Ymxp
YyBET01VSUV2ZW50LCBwdWJsaWMgSURPTUtleWJvYXJkRXZlbnQKIHsKIHB1YmxpYzoKLSAgICBE
T01LZXlib2FyZEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpIDogRE9NVUlFdmVu
dChlKSB7IH0KKyAgICBET01LZXlib2FyZEV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJiBl
KQorICAgICAgICA6IERPTVVJRXZlbnQoV1RGTW92ZShlKSkKKyAgICB7IH0KIAogICAgIC8vIElV
bmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAg
LTQ2NCw3ICs0NjcsOSBAQCBwdWJsaWM6CiBjbGFzcyBET01Nb3VzZUV2ZW50IDogcHVibGljIERP
TVVJRXZlbnQsIHB1YmxpYyBJRE9NTW91c2VFdmVudAogewogcHVibGljOgotICAgIERPTU1vdXNl
RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBET01VSUV2ZW50KGUpIHsgfQor
ICAgIERPTU1vdXNlRXZlbnQoUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiYmIGUpCisgICAgICAgIDog
RE9NVUlFdmVudChXVEZNb3ZlKGUpKQorICAgIHsgfQogCiAgICAgLy8gSVVua25vd24KICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNjM5LDcgKzY0NCw5
IEBAIHB1YmxpYzoKIGNsYXNzIERPTU11dGF0aW9uRXZlbnQgOiBwdWJsaWMgRE9NRXZlbnQsIHB1
YmxpYyBJRE9NTXV0YXRpb25FdmVudAogewogcHVibGljOgotICAgIERPTU11dGF0aW9uRXZlbnQo
UGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBET01FdmVudChlKSB7IH0KKyAgICBET01N
dXRhdGlvbkV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJiBlKQorICAgICAgICA6IERPTUV2
ZW50KFdURk1vdmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NTIsNyArNzU5LDkgQEAgcHVi
bGljOgogY2xhc3MgRE9NT3ZlcmZsb3dFdmVudCA6IHB1YmxpYyBET01FdmVudCwgcHVibGljIElE
T01PdmVyZmxvd0V2ZW50CiB7CiBwdWJsaWM6Ci0gICAgRE9NT3ZlcmZsb3dFdmVudChQYXNzUmVm
UHRyPFdlYkNvcmU6OkV2ZW50PiBlKSA6IERPTUV2ZW50KGUpIHsgfQorICAgIERPTU92ZXJmbG93
RXZlbnQoUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiYmIGUpCisgICAgICAgIDogRE9NRXZlbnQoV1RG
TW92ZShlKSkKKyAgICB7IH0KIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTg2MCw3ICs4NjksOSBAQCBwdWJsaWM6CiBj
bGFzcyBET01XaGVlbEV2ZW50IDogcHVibGljIERPTVVJRXZlbnQsIHB1YmxpYyBJRE9NV2hlZWxF
dmVudAogewogcHVibGljOgotICAgIERPTVdoZWVsRXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpF
dmVudD4gZSkgOiBET01VSUV2ZW50KGUpIHsgfQorICAgIERPTVdoZWVsRXZlbnQoUmVmUHRyPFdl
YkNvcmU6OkV2ZW50PiYmIGUpCisgICAgICAgIDogRE9NVUlFdmVudChXVEZNb3ZlKGUpKQorICAg
IHsgfQogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMmMyMDUxZGNm
ZTllMzA3YTc0Y2I4OGI2OWZiZWYyOGY4YWU4NzZjYy4uYmVmN2QxMjgyNmMxNzM0ZWIwNThiNzJl
NmM2ZmI4ZmE2YjQxNTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw4
ICszMSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIpCi0gICAgOiBtX2J1ZmZlcihidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiTWVtb3J5U3RyZWFtIik7CkBAIC00NCw5ICs0NCw5IEBAIE1lbW9yeVN0cmVhbTo6fk1l
bW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0i
KTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKLSAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShidWZmZXIpOworICAgIHJldHVybiBu
ZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5oIGIvU291
cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggZjU1OWM1ODA2NTUwOWViYTQzMmJh
MDUwNTJjYjc5MWZlZDEyMWUzZS4uOTdmMWM5NzUwMzA4YzI2ZjljM2ExYTZkNDQ0ODU3M2I2OWJi
OWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTMwLDE2ICszMCwxNSBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgotI2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8V1RGL1JlZlB0ci5o
PgogCiBjbGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAg
IHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAK
IHByb3RlY3RlZDoKLSAgICBNZW1vcnlTdHJlYW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlcik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIHB1YmxpYzoKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAxNjliMTk3MTYxNmJkNmE0
NGM5MjExNTk3OWQyZjkyZmZiM2I5NTgwLi4xYTBmYmY2ZTY0YWJjMzAzZWM3Y2U1ZmFhYmU1OWMw
M2I0MTY3NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQog
ICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVn
aW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKLSAgICAgICAgaWYg
KHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZSgpKSkKKyAgICAgICAgaWYgKHBhY2thZ2Ug
JiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAgICAgICBwbHVnaW5TZXRD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKQEAgLTMyNSwxNiArMzI1LDEyIEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKICAg
ICB9CiB9CiAKLWJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2th
Z2U+IHBycFBhY2thZ2UpCitib29sIFBsdWdpbkRhdGFiYXNlOjphZGQoUmVmPFBsdWdpblBhY2th
Z2U+JiYgcGFja2FnZSkKIHsKLSAgICBBU1NFUlRfQVJHKHBycFBhY2thZ2UsIHBycFBhY2thZ2Up
OwotCi0gICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOwotCi0g
ICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3RW50cnkpCisgICAgaWYgKCFtX3Bs
dWdpbnMuYWRkKHBhY2thZ2UuY29weVJlZigpKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2Fn
ZSk7CisgICAgbV9wbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UuY29w
eVJlZigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI5LDkgKzUyNSw5IEBAIHZvaWQg
UGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgIGlm
IChtX3BsdWdpbkRpcmVjdG9yaWVzLmZpbmQocGx1Z2luRGlyZWN0b3J5TmFtZSkgPT0gV1RGOjpu
b3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5Q
YWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShw
YXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsKKyAgICAgICAgYXV0byBw
YWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShwYXRoLCBsYXN0
TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsKIAotICAgICAgICBpZiAocGFja2FnZSAm
JiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5KSB7CisgICAgICAgIGlmIChw
YWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UuY29weVJlZigpKS5pc05ld0VudHJ5
KSB7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcy5hZGQocGFja2FnZS0+
cGF0aCgpLCBwYWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAgICAgICAgICBjYWNoZWRQbHVn
aW5zQnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggZWI2YTg0MTEyNGQ2
OTc3NWI2Y2NjN2JlNDNmYmMwOWRiZjA5NzcxMi4uMDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDEx
YmZhNGM3ZmQ5MzBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuaApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICAg
ICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnaW4gd2FzIGFjdHVhbGx5IGFkZGVkIG9yIG5v
dCAoaXQgd29uJ3QgYmUgYWRkZWQgaWYgaXQncyBhIGR1cGxpY2F0ZSBvZiBhbiBleGlzdGluZyBw
bHVnaW4pLgotICAgICAgICBib29sIGFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+KTsKKyAg
ICAgICAgYm9vbCBhZGQoUmVmPFBsdWdpblBhY2thZ2U+JiYpOwogICAgICAgICB2b2lkIHJlbW92
ZShQbHVnaW5QYWNrYWdlKik7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9D
QUNIRSkKICAgICAgICAgdm9pZCBsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCmluZGV4IDUwZjFiMzMwYTNi
NDNhOWRhNzg2YzE5NWEwNzljNzhiNzI0NzRmODYuLmI4NDg1NDYxNGYzNTg0ZWVkMDgzMWFkOTY0
NDc3ZjEyMWQwNmVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNr
YWdlLmNwcApAQCAtMTYzLDI2ICsxNjMsMjYgQEAgdm9pZCBQbHVnaW5QYWNrYWdlOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLVBhc3NS
ZWZQdHI8UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVkKQorUmVmUHRyPFBsdWdpblBh
Y2thZ2U+IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCkKIHsKICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4g
cGFja2FnZSA9IGFkb3B0UmVmKG5ldyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2RpZmllZCkp
OwogCiAgICAgaWYgKCFwYWNrYWdlLT5mZXRjaEluZm8oKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHBhY2thZ2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBwYWNrYWdlOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRB
REFUQV9DQUNIRSkKLVBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3Jl
YXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFz
dE1vZGlmaWVkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQorUmVmPFBsdWdpblBhY2thZ2U+IFBsdWdp
blBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCB0aW1lX3QmIGxhc3RNb2RpZmllZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IGFkb3B0UmVmKG5ldyBQbHVnaW5QYWNrYWdlKHBh
dGgsIGxhc3RNb2RpZmllZCkpOworICAgIFJlZjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gYWRv
cHRSZWYoKm5ldyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2RpZmllZCkpOwogICAgIHBhY2th
Z2UtPm1fbmFtZSA9IG5hbWU7CiAgICAgcGFja2FnZS0+bV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uOwogICAgIHBhY2thZ2UtPmRldGVybWluZU1vZHVsZVZlcnNpb25Gcm9tRGVzY3JpcHRpb24o
KTsKICAgICBwYWNrYWdlLT5zZXRNSU1FRGVzY3JpcHRpb24obWltZURlc2NyaXB0aW9uKTsKICAg
ICBwYWNrYWdlLT5tX2luZm9Jc0Zyb21DYWNoZSA9IHRydWU7Ci0gICAgcmV0dXJuIHBhY2thZ2Uu
cmVsZWFzZSgpOworICAgIHJldHVybiBwYWNrYWdlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggZDc2ZWFmZDU3OWJiMzYwZjc3NDJl
ZWE0ZGNjMTEyYThlNWM3MTVhNS4uZjEyNzcyNWQyMDM4Mjc3Y2M1N2ZiYjkxNjhiZTIxZjEyYjA5
ZTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTQ2
LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpblBhY2thZ2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5QYWNrYWdlPiB7CiAgICAgcHVibGljOgogICAgICAg
ICB+UGx1Z2luUGFja2FnZSgpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5QYWNr
YWdlPiBjcmVhdGVQYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0
TW9kaWZpZWQpOworICAgICAgICBzdGF0aWMgUmVmUHRyPFBsdWdpblBhY2thZ2U+IGNyZWF0ZVBh
Y2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCk7CiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gY3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0
aW9uKTsKKyAgICAgICAgc3RhdGljIFJlZjxQbHVnaW5QYWNrYWdlPiBjcmVhdGVQYWNrYWdlRnJv
bUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0TW9kaWZpZWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5n
JiBtaW1lRGVzY3JpcHRpb24pOwogI2VuZGlmCiAKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5TdHJlYW0uaAppbmRleCA0MmM2ZGRmODAzNzk2NDA4NDJiODExODc0ZWUyODVkZjZlYmNlYTQ5
Li42MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFlYmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTU2LDkgKzU2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8
UGx1Z2luU3RyZWFtPiwgcHJpdmF0ZSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5TdHJlYW0+IGNy
ZWF0ZShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNhdGlvbiwgdm9pZCogbm90aWZ5
RGF0YSwgY29uc3QgTlBQbHVnaW5GdW5jcyogZnVuY3Rpb25zLCBOUFAgaW5zdGFuY2UsIGNvbnN0
IFBsdWdpblF1aXJrU2V0JiBxdWlya3MpCisgICAgICAgIHN0YXRpYyBSZWY8UGx1Z2luU3RyZWFt
PiBjcmVhdGUoUGx1Z2luU3RyZWFtQ2xpZW50KiBjbGllbnQsIEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5v
dGlmeURhdGEsIGNvbnN0IE5QUGx1Z2luRnVuY3MqIGZ1bmN0aW9ucywgTlBQIGluc3RhbmNlLCBj
b25zdCBQbHVnaW5RdWlya1NldCYgcXVpcmtzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsdWdpblN0cmVhbShjbGllbnQsIGZyYW1lLCByZXF1ZXN0LCBzZW5k
Tm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBmdW5jdGlvbnMsIGluc3RhbmNlLCBxdWlya3MpKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdpblN0cmVhbShjbGllbnQsIGZy
YW1lLCByZXF1ZXN0LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBmdW5jdGlvbnMsIGlu
c3RhbmNlLCBxdWlya3MpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5QbHVnaW5TdHJl
YW0oKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKaW5kZXggZTM0NzAyNjVmYzhiOTRkOGMyNTA1ZmNkNzRhM2Y0ZTRlZTk0Y2I2MC4uNzIxZDFj
ZDUyZDI2YjljM2ZiZTJhNzk5YThkZDNhM2U2N2UzMTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiAvLyBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViQWN0aW9uUHJvcGVydHlCYWc6
OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFz
c1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0sIFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1lKQor
V2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8
RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2FjdGlvbihhY3Rpb24pCi0gICAgLCBtX2Zvcm0oZm9y
bSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2Zvcm0oV1RGTW92ZShmb3JtKSkKKyAg
ICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CkBAIC01NCw5ICs1
NCw5IEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKIH0KIAot
V2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5j
ZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVt
ZW50PiBmb3JtLCBQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK1dlYkFjdGlvblByb3BlcnR5QmFn
KiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFt
ZT4mJiBmcmFtZSkKIHsKLSAgICBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogaW5zdGFuY2UgPSBuZXcg
V2ViQWN0aW9uUHJvcGVydHlCYWcoYWN0aW9uLCBmb3JtLCBmcmFtZSk7IAorICAgIFdlYkFjdGlv
blByb3BlcnR5QmFnKiBpbnN0YW5jZSA9IG5ldyBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhhY3Rpb24s
IFdURk1vdmUoZm9ybSksIFdURk1vdmUoZnJhbWUpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQWN0aW9uUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3Bl
cnR5QmFnLmgKaW5kZXggMzc1NzE1MWI5ODEwNTliYWQ4NTc4YmFmN2NiNjUwMzkyZmQ5Y2Q5MC4u
MGY5ZjAxNTIyNmRjYWVkM2YyNzdkNDljN2U4NzQ2NDNhNTVmOWZlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5oCkBAIC0zMywxMCArMzMsMTAgQEAKIAogY2xhc3Mg
V2ViQWN0aW9uUHJvcGVydHlCYWcgOiBwdWJsaWMgSVByb3BlcnR5QmFnIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgV2ViQWN0aW9uUHJvcGVydHlCYWcqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBzdGF0aWMgV2ViQWN0aW9uUHJv
cGVydHlCYWcqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
LCBSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYmLCBSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBXZWJBY3Rpb25Qcm9wZXJ0eUJh
Zyhjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudD4mJiwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYmKTsKICAgICB+V2ViQWN0aW9u
UHJvcGVydHlCYWcoKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCBh
ZDBjOTg2ZTg4ZDA3ZWQ2ZmJkYzkxMzM1ZmZlY2IwYWVlZTMzYzQxLi4xN2JhMmFmNjM5ODMwNTBk
ZjgyZjk4YmRmMTQ1ODg1YTMzYzM1MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAt
NDEsMTYgKzQxLDE2IEBAIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0
ZUluc3RhbmNlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUpCitXZWJB
cmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4mJiBjb3JlQXJjaGl2ZSkKIHsKLSAgICBXZWJBcmNoaXZlKiBpbnN0YW5jZSA9IG5ldyBXZWJB
cmNoaXZlKGNvcmVBcmNoaXZlKTsKKyAgICBXZWJBcmNoaXZlKiBpbnN0YW5jZSA9IG5ldyBXZWJB
cmNoaXZlKFdURk1vdmUoY29yZUFyY2hpdmUpKTsKIAogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkKLSAgICA6IG1fYXJjaGl2ZShjb3Jl
QXJjaGl2ZSkKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
JiYgY29yZUFyY2hpdmUpCisgICAgOiBtX2FyY2hpdmUoV1RGTW92ZShjb3JlQXJjaGl2ZSkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hp
dmUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaAppbmRleCA1Y2U2MGQ4YjBlMjYxNTJiMDE1ZDYwMDNj
Mzk2YjYzOGYzZjlhYTY2Li5lMWFjYWZmZDI4MjdhOWNjZWNkODFiODA1MzYzMmU3MGZiNDliZjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQXJjaGl2ZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJX
ZWJLaXQuaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw5ICszOCw5IEBAIGNsYXNzIFdl
YkFyY2hpdmUgOiBwdWJsaWMgSVdlYkFyY2hpdmUKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
QXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViQXJjaGl2ZSogY3JlYXRl
SW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CisgICAgc3Rh
dGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJBcmNoaXZlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOworICAgIFdlYkFyY2hpdmUoUmVmUHRyPFdlYkNvcmU6Okxl
Z2FjeVdlYkFyY2hpdmU+JiYpOwogICAgIH5XZWJBcmNoaXZlKCk7CiAKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDRlYTIwMGQxYmNkNWRiMmM5
Y2E2YzE5Y2U3OTkwNmI1NDkxMTdkMDYuLmUyNmRmNDkyMjI4Yzk2NzJhYWQ5MmJkM2M2YzMwMTQ0
MTNmNDJkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAt
NDcsOCArNDcsOCBAQCBzdGF0aWMgSGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9y
d2FyZExpc3QqPiYgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKQogICAgIHJldHVybiBzdGF0aWNC
YWNrRm9yd2FyZExpc3RXcmFwcGVyczsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNr
Rm9yd2FyZExpc3QoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkTGlzdCkK
LSAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGJhY2tGb3J3YXJkTGlzdCkKK1dlYkJhY2tGb3J3YXJk
TGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0Zv
cndhcmRMaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QoV1RGTW92ZShiYWNrRm9yd2FyZExp
c3QpKQogewogICAgIEFTU0VSVCghYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5jb250YWlucyht
X2JhY2tGb3J3YXJkTGlzdC5nZXQoKSkpOwogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCku
c2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsKQEAgLTY4LDEyICs2OCwxMiBAQCBX
ZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CiB9CiAKLVdlYkJhY2tGb3J3YXJk
TGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJhY2tG
b3J3YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0KQorV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJCYWNr
Rm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFj
a0ZvcndhcmRMaXN0KQogewotICAgIFdlYkJhY2tGb3J3YXJkTGlzdCogaW5zdGFuY2UgPSBiYWNr
Rm9yd2FyZExpc3RXcmFwcGVycygpLmdldChiYWNrRm9yd2FyZExpc3QuZ2V0KCkpOworICAgIFdl
YkJhY2tGb3J3YXJkTGlzdCogaW5zdGFuY2UgPSBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLmdl
dChiYWNrRm9yd2FyZExpc3QucHRyKCkpOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAg
aW5zdGFuY2UgPSBuZXcgV2ViQmFja0ZvcndhcmRMaXN0KGJhY2tGb3J3YXJkTGlzdCk7CisgICAg
ICAgIGluc3RhbmNlID0gbmV3IFdlYkJhY2tGb3J3YXJkTGlzdChXVEZNb3ZlKGJhY2tGb3J3YXJk
TGlzdCkpOwogCiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggOWRlNjhiMzlkZjBmYjZl
MTI1M2Q5OGFmODQxNWQ4NmNkYzZmMDMyYy4uYmZhMjUxNjc0OWZkYTQ4ZmRhNWIxMjM4YjE5ZDY0
MTQzOWI2ZDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRM
aXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAKLSNpbmNsdWRlIDxX
VEYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPFdURi9SZWZQdHIuaD4KIAogY2xhc3MgQmFja0Zv
cndhcmRMaXN0OwpAQCAtMzcsOSArMzYsOSBAQCBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7CiBjbGFz
cyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgSVdlYkJhY2tGb3J3YXJkTGlzdCwgSVdlYkJh
Y2tGb3J3YXJkTGlzdFByaXZhdGUKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQmFja0Zvcndh
cmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAg
IHN0YXRpYyBXZWJCYWNrRm9yd2FyZExpc3QqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9y
d2FyZExpc3Q+JiYpOwogcHJvdGVjdGVkOgotICAgIFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVm
UHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFj
a0ZvcndhcmRMaXN0PiYmKTsKICAgICB+V2ViQmFja0ZvcndhcmRMaXN0KCk7CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lk
Z2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0
LmNwcAppbmRleCAxNDcyM2ZkOWFmM2E0NjIzOWViODAzZDM1MzBiYWRmZDAzYmNiMmRhLi41YTZm
MTEyMDNjYmU5N2RjMzZhMTNjNGY2ODJiNzM4MDlkOWVhNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCkBAIC0zNywxMiAr
MzcsMTIgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8RW1iZWRk
ZWRXaWRnZXQ+IEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGUoSVdlYkVtYmVkZGVkVmlldyogdmlldywg
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIEhXTkQgcGFyZW50V2luZG93LCBjb25zdCBJbnRT
aXplJiBzaXplKQorUmVmPEVtYmVkZGVkV2lkZ2V0PiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKElX
ZWJFbWJlZGRlZFZpZXcqIHZpZXcsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBIV05EIHBh
cmVudFdpbmRvdywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8RW1iZWRkZWRX
aWRnZXQ+IHdpZGdldCA9IGFkb3B0UmVmKG5ldyBFbWJlZGRlZFdpZGdldCh2aWV3LCBlbGVtZW50
KSk7CisgICAgYXV0byB3aWRnZXQgPSBhZG9wdFJlZigqbmV3IEVtYmVkZGVkV2lkZ2V0KHZpZXcs
IGVsZW1lbnQpKTsKIAogICAgIHdpZGdldC0+Y3JlYXRlV2luZG93KHBhcmVudFdpbmRvdywgc2l6
ZSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0K
IAogRW1iZWRkZWRXaWRnZXQ6On5FbWJlZGRlZFdpZGdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5oIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuaAppbmRleCBmNjQ3YjNlMWNjOTc3
MjM1NGM4NTY3MDc1ZDJiNjc1MTBjZjg5M2I3Li4yNTI3OTgyY2VjM2RiZDVmNTcwZTJmNWJiMjc4
YTQxYzhiMjhlZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L0VtYmVkZGVkV2lkZ2V0LmgKQEAgLTQwLDcgKzQwLDcgQEAgaW50ZXJmYWNlIElXZWJFbWJlZGRl
ZFZpZXc7CiAKIGNsYXNzIEVtYmVkZGVkV2lkZ2V0IDogcHVibGljIFdlYkNvcmU6OldpZGdldCwg
cHVibGljIFdlYkNvcmU6OlBsdWdpbk1hbnVhbExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IGNyZWF0ZShJV2ViRW1iZWRkZWRWaWV3KiwgV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBIV05EIHBhcmVudFdpbmRvdywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOworICAgIHN0YXRpYyBSZWY8RW1iZWRkZWRXaWRnZXQ+IGNyZWF0ZShJV2Vi
RW1iZWRkZWRWaWV3KiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBIV05EIHBhcmVudFdp
bmRvdywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIH5FbWJlZGRlZFdpZGdldCgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCA4MDliOGE3OWMzNGU3YmFkYTVhNWRjZDI1ZGI5MzI2MjFlYTQ5
YWMxLi44NjY3ODdjMDcwZjRiZTgzODU3MGEwZmQ3ZGZlNmJkNjEyMWQ4M2JiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogY2xh
c3MgV2ViVmlldzsKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKaW5kZXggYmExNDM1MTk2NTkyNjZhNjUwNzVjZjQ5MGE1NDFmZDQyZDU4
MTllZS4uZmE2NWNjNDA5Nzc0ZjhjZGFhMjk4ZDU1NjQ3ZGJjODE1YmViNGM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcApAQCAtNTY1LDcgKzU2NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRS
ZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09L
OwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RS
IGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0
RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJp
bmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAg
IGlmICghbWltZVR5cGUpCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERh
dGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUs
IEIKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VDb3JlVVJMKTsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBtaW1lVHlwZVN0cmluZywgZGF0YS0+c2l6ZSgp
LCBlbmNvZGluZ1N0cmluZyk7Ci0gICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoZGF0
YSwgZmFpbGluZ0NvcmVVUkwsIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5OjpIaWRkZW4pOworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRh
KFdURk1vdmUoZGF0YSksIGZhaWxpbmdDb3JlVVJMLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6
OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuKTsKIAogICAgIC8vIFRoaXMgbWV0aG9k
IGlzIG9ubHkgY2FsbGVkIGZyb20gSVdlYkZyYW1lIG1ldGhvZHMsIHNvIGRvbid0IEFTU0VSVCB0
aGF0IHRoZSBGcmFtZSBwb2ludGVyIGlzbid0IG51bGwuCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKHRoaXMpKQpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6
ZGVzZWxlY3RBbGwoKQogCiAvLyBXZWJGcmFtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUGFzc1JlZlB0cjxGcmFtZT4g
V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lV2l0aE93bmVyRWxlbWVudChJV2ViVmlldyogd2ViVmll
dywgUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCitSZWY8
RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQoSVdlYlZpZXcq
IHdlYlZpZXcsIFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
KQogewogICAgIHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZkLT53ZWJWaWV3KTsKICAgICBkLT53
ZWJWaWV3LT5SZWxlYXNlKCk7IC8vIGRvbid0IGhvbGQgdGhlIGV4dHJhIHJlZgpAQCAtMTA0MCw5
ICsxMDQwLDkgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lV2l0
aE93bmVyRWxlbWVudChJV2ViVmlldyogd2ViVmlldywgUGEKICAgICBkLT53ZWJWaWV3LT52aWV3
V2luZG93KCZ2aWV3V2luZG93KTsKIAogICAgIHRoaXMtPkFkZFJlZigpOyAvLyBXZSByZWxlYXNl
IHRoaXMgcmVmIGluIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkKLSAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCBvd25lckVsZW1lbnQsIG5ldyBXZWJGcmFtZUxvYWRl
ckNsaWVudCh0aGlzKSk7Ci0gICAgZC0+ZnJhbWUgPSBmcmFtZS5nZXQoKTsKLSAgICByZXR1cm4g
ZnJhbWUucmVsZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UsIG93
bmVyRWxlbWVudCwgbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50KHRoaXMpKTsKKyAgICBkLT5mcmFt
ZSA9IGZyYW1lLnB0cigpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6
aW5pdFdpdGhXZWJWaWV3KElXZWJWaWV3KiB3ZWJWaWV3LCBQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZy
YW1lLmgKaW5kZXggYTRkOTE5MWZlZTRlNDFhYWEzNDc1Y2FhYjUzZmI2OTJhOTRhNzRlNC4uZGJl
YTY5OGE1NzUwMjEyYTUwNjUwZTc4MzkxNjlkMGE1ZTFiMzc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5o
CkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpOwogCiAgICAgLy8gV2ViRnJhbWUKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQoSVdlYlZpZXcqLCBXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CisgICAgUmVmPFdlYkNv
cmU6OkZyYW1lPiBjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQoSVdlYlZpZXcqLCBXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAgICAgdm9pZCBp
bml0V2l0aFdlYlZpZXcoSVdlYlZpZXcqLCBXZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6
RnJhbWUqIGltcGwoKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTE5OSw3ICsxOTksNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNU
UiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwot
ICAgIHZvaWQgbG9hZERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29t
cHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHBy
aW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywg
V2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJI
ZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAKaW5kZXggZjA4NWIyODFlNzhjOTdlNDQ2Njk4M2FjMzFjMzJkMjFmMTRj
NjEwNS4uMmQ2ZjY5ZWE0NWM0Y2MyNjc2MzYwNDQ1ODFlMDM0YTczMDU0NzcwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTM1LDggKzM1LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1XZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
KFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKK1dlYkZyYW1l
UG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZy
YW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOwpA
QCAtNDgsOSArNDgsOSBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lcigpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIik7CiB9CiAKLVdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXI6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1lKQorV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPEZyYW1lPiYmIGZyYW1lKQogewotICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIGluc3Rh
bmNlID0gbmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXIoZnJhbWUpOworICAgIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXIqIGluc3RhbmNlID0gbmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXIoV1RGTW92
ZShmcmFtZSkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmgKaW5kZXggZDNm
NjdmOTAwZmVmNTA3OWIyOGU4MjJmZDY0NmMzY2MzZjk3MDk5Mi4uMDJiYzRjYWFiNjU5ZTI5OTg2
NjhjZDgxMjM0Mzg2MzY5MTZiZjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyX2gKIAogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+CkBAIC0zOCw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciA6IHB1YmxpYyBJV2ViUG9saWN5RGVjaXNpb25MaXN0
ZW5lciwgcHVibGljIElXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4pOworICAgIHN0YXRpYyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6RnJhbWU+JiYpOwogcHJvdGVjdGVkOgotICAgIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4pOworICAgIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYmKTsKICAgICB+V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcigpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IDgwNmVkZjZlMzgyMjcx
ZmFiNWE5YWYxNzI4MzJhNmUzZTljYTEzNmQuLjk3NzU1YTlmNmUxMjhkYjc3OTBlOWIwYjExMjMx
ZGQ4NmMzNzZlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DT01Q
dHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbj4gZ2VvbG9jYXRpb24p
CitDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEdlb2xvY2F0aW9uPiYmIGdlb2xvY2F0
aW9uKQogewotICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihnZW9s
b2NhdGlvbik7CisgICAgcmV0dXJuIG5ldyBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFdU
Rk1vdmUoZ2VvbG9jYXRpb24pKTsKIH0KIAotV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uPiBnZW9s
b2NhdGlvbikKK1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIoUmVmUHRyPEdlb2xvY2F0aW9uPiYmIGdlb2xvY2F0aW9uKQogICAgIDogbV9y
ZWZDb3VudCgwKQotICAgICwgbV9nZW9sb2NhdGlvbihnZW9sb2NhdGlvbikKKyAgICAsIG1fZ2Vv
bG9jYXRpb24oV1RGTW92ZShnZW9sb2NhdGlvbikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaApp
bmRleCBmY2U1YjU1MzM1MDM0MmQ4MTAyMjNmMDBlYjI2YTBmMGUwOWUzYzgwLi4wN2Y5YWZlM2Fm
NjM3NjdhNDY4MTExZTNhZTBhZThkZTdiYzBiZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
bmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNyw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciA6IHB1YmxpYyBJV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyPiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0
aW9uPik7CisgICAgc3RhdGljIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyPiBj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+JiYpOwogCiAgICAgLy8g
SVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpA
QCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRlbnkoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+KTsKKyAgICBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyKFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4mJik7CiAgICAgfldl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoKTsKIAogICAgIFVMT05HIG1fcmVmQ291bnQgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggM2JlNzgxZThkODlkOThj
YjY4NTFiMDViYWY0ZTgzM2MyMGY3MjBjMi4uOWZjZjAzZGMwMzBlNTU0NDYwMmUyMThhMmQxOGRl
MGExYWRkYzZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNDYsOCAr
NDYsOCBAQCBzdGF0aWMgSGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4mIGhp
c3RvcnlJdGVtV3JhcHBlcnMoKQogICAgIHJldHVybiBzdGF0aWNIaXN0b3J5SXRlbVdyYXBwZXJz
OwogfQogCi1XZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4gaGlzdG9yeUl0ZW0pCi0gICAgOiBtX2hpc3RvcnlJdGVtKGhpc3RvcnlJdGVtKQorV2Vi
SGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5
SXRlbSkKKyAgICA6IG1faGlzdG9yeUl0ZW0oV1RGTW92ZShoaXN0b3J5SXRlbSkpCiB7CiAgICAg
QVNTRVJUKCFoaXN0b3J5SXRlbVdyYXBwZXJzKCkuY29udGFpbnMobV9oaXN0b3J5SXRlbS5nZXQo
KSkpOwogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwg
dGhpcyk7CkBAIC03MiwxNCArNzIsMTQgQEAgV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVt
OjpjcmVhdGVJbnN0YW5jZSgpCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1XZWJIaXN0b3J5
SXRlbSogV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IGhpc3RvcnlJdGVtKQorV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0pCiB7CiAgICAgV2ViSGlz
dG9yeUl0ZW0qIGluc3RhbmNlOwogCi0gICAgaW5zdGFuY2UgPSBoaXN0b3J5SXRlbVdyYXBwZXJz
KCkuZ2V0KGhpc3RvcnlJdGVtLmdldCgpKTsKKyAgICBpbnN0YW5jZSA9IGhpc3RvcnlJdGVtV3Jh
cHBlcnMoKS5nZXQoaGlzdG9yeUl0ZW0ucHRyKCkpOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAg
ICAgICAgaW5zdGFuY2UgPSBuZXcgV2ViSGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pOworICAgICAg
ICBpbnN0YW5jZSA9IG5ldyBXZWJIaXN0b3J5SXRlbShXVEZNb3ZlKGhpc3RvcnlJdGVtKSk7CiAK
ICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmgKaW5kZXggMjBkZjlhY2I2MGJhMWRlNmU0ZTVkYmFhOTcyNTQyZjM2
Mjk4Y2U5Yi4uYjM4NjU3MDNlZGNjMWE5Y2E3ZjNkZmZkNmFlMzE4M2Q2MmQxMzA4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiV2Vi
S2l0LmgiCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw5ICs0Miw5IEBAIGNsYXNzIFdlYkhp
c3RvcnlJdGVtIDogcHVibGljIElXZWJIaXN0b3J5SXRlbSwgSVdlYkhpc3RvcnlJdGVtUHJpdmF0
ZQogewogcHVibGljOgogICAgIHN0YXRpYyBXZWJIaXN0b3J5SXRlbSogY3JlYXRlSW5zdGFuY2Uo
KTsKLSAgICBzdGF0aWMgV2ViSGlzdG9yeUl0ZW0qIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsKKyAgICBzdGF0aWMgV2ViSGlzdG9yeUl0ZW0qIGNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJik7CiBwcm90ZWN0ZWQ6Ci0g
ICAgV2ViSGlzdG9yeUl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4pOworICAg
IFdlYkhpc3RvcnlJdGVtKFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJik7CiAgICAgfldl
Ykhpc3RvcnlJdGVtKCk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAppbmRleCBkNWQ2MmFmZDVmZTU4ZWUxNzk2MmI4NTJlOTBmMWE3MDk1Nzgy
NWMzLi42MjBlODlmMWNiNDJiMTAxMGNkY2ZmMmVmYjZmMzBjYTQyZTQ3YTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0zOTQsMTIgKzM5NCwxMiBA
QCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weShfQ09NX091dHB0cl9v
cHRfIElXZWJNdXRhYmxlVVJMUmVxdWVzdAogCiAvLyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lk
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRGb3JtRGF0YShjb25zdCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBkYXRhKQordm9pZCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0Rm9ybURhdGEoY29uc3Qg
UmVmUHRyPEZvcm1EYXRhPiYmIGRhdGEpCiB7Ci0gICAgbV9yZXF1ZXN0LnNldEhUVFBCb2R5KGRh
dGEpOworICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotY29u
c3QgUGFzc1JlZlB0cjxGb3JtRGF0YT4gV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmZvcm1EYXRhKCkg
Y29uc3QKK2NvbnN0IFJlZlB0cjxGb3JtRGF0YT4gV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmZvcm1E
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXF1ZXN0Lmh0dHBCb2R5KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuaAppbmRleCA3NzUwYWRiMjEzNzhkZjE1
NWM0ZGZkOGNhN2RhNjg1MWM0NTU4MGE2Li41MzA0MWFjOGE0MDZmMjNhMjdiMzRhZmEwMDZiYTc3
NGQzYjE4OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmgKQEAg
LTk5LDggKzk5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBDRlVSTFJl
cXVlc3RSZWYgU1RETUVUSE9EQ0FMTFRZUEUgY2ZSZXF1ZXN0KCk7CiAKICAgICAvLyBXZWJNdXRh
YmxlVVJMUmVxdWVzdAotICAgIHZvaWQgc2V0Rm9ybURhdGEoY29uc3QgUGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtRGF0YT4gZGF0YSk7Ci0gICAgY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3Jt
RGF0YT4gZm9ybURhdGEoKSBjb25zdDsKKyAgICB2b2lkIHNldEZvcm1EYXRhKGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpGb3JtRGF0YT4mJik7CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZvcm1E
YXRhPiBmb3JtRGF0YSgpIGNvbnN0OwogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2Uu
Y3BwCmluZGV4IDlkNzVmMmY1YjFjNDVkODEwMzhmMzM4MDFmMDBmMTRmYjY5NzZhMjguLmIyOTJk
ZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNv
dXJjZS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNv
dXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKGRhdGEpOworICAgIENPTVB0cjxNZW1vcnlTdHJl
YW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShk
YXRhKSk7CiAKICAgICBXZWJSZXNvdXJjZSogaW5zdGFuY2UgPSBuZXcgV2ViUmVzb3VyY2UobWVt
b3J5U3RyZWFtLmdldCgpLCByZXNwb25zZS51cmwoKSwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJl
ZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKaW5kZXggMzRmNjMyZDlmYmYyOTg0Y2VkYmU4N2I1
MDJhOGNiNjUwZjBjYTE5Zi4uYjhjN2RjY2IwMzc0OWFiNzg3M2UzN2ZmYTI5ZjI1MmM2NTNiZWJh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIGNsYXNzIFdlYlJlc291cmNlIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogcHJvdGVjdGVkOgogICAgIFdlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1l
KTsKICAgICB+V2ViUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApp
bmRleCAzMjliMjZkM2U1ZWZhNDg3ZTc4YWE4MGRkNGM2MjY1NDVkYzhiYjI1Li5kNWFiNGFlN2Q3
YmI2ZTVjN2E2OTgxNDYyZjA3MTI2ZTczMGEyYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0
V29ybGQuY3BwCkBAIC0zOCw4ICszOCw4IEBAIHN0YXRpYyBXb3JsZE1hcCYgYWxsV29ybGRzKCkK
ICAgICByZXR1cm4gbWFwOwogfQogCi1pbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdv
cmxkKFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCkKLSAgICA6IG1fd29ybGQod29y
bGQpCitpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+JiYgd29ybGQpCisgICAgOiBtX3dvcmxkKFdURk1vdmUod29ybGQpKQogewogICAg
IEFTU0VSVF9BUkcod29ybGQsIG1fd29ybGQpOwogCkBAIC03MCw5ICs3MCw5IEBAIENPTVB0cjxX
ZWJTY3JpcHRXb3JsZD4gV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1
cm4gY3JlYXRlSW5zdGFuY2UoU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoKSk7CiB9CiAK
LUNPTVB0cjxXZWJTY3JpcHRXb3JsZD4gV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKFBh
c3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCkKK0NPTVB0cjxXZWJTY3JpcHRXb3JsZD4g
V2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYg
d29ybGQpCiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJTY3JpcHRXb3JsZCh3b3JsZCk7CisgICAgcmV0
dXJuIG5ldyBXZWJTY3JpcHRXb3JsZChXVEZNb3ZlKHdvcmxkKSk7CiB9CiAKIENPTVB0cjxXZWJT
Y3JpcHRXb3JsZD4gV2ViU2NyaXB0V29ybGQ6OmZpbmRPckNyZWF0ZVdvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3Js
ZC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuaAppbmRleCA2YzVmMTNjMDA0
OGRiMmVmYmY3MThhNThmNjA4MjQ0YTY0YWIyMzY0Li45Y2FiYTJlMGMwZjI3ODAxN2MyNzEzNzdm
NzMyMTc2OGM4OGRiY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRX
b3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSBj
b25zdCB7IHJldHVybiAqbV93b3JsZDsgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyBDT01QdHI8
V2ViU2NyaXB0V29ybGQ+IGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkPik7CisgICAgc3RhdGljIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4gY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZD4mJik7CiAKLSAgICBXZWJTY3Jp
cHRXb3JsZChQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZD4pOworICAgIFdlYlNj
cmlwdFdvcmxkKFJlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+JiYpOwogICAgIH5XZWJT
Y3JpcHRXb3JsZCgpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlELCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMmJmMDM5ZTI0ZmJiZTE1ZWVhNDdmOWQyNTcwMGIxZWEy
OWRmY2RlNi4uMzVhODQ1ZWQ2OTNjYTA1ZGM3NmRlNjM1NjdiY2U2ZmU5ZGRjYTZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyLmNwcApAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogLy8gV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIoUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNsaWVudD4gY2xpZW50KQotICAg
IDogbV9jbGllbnQoY2xpZW50KQorV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6
OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjxBdXRoZW50aWNhdGlv
bkNsaWVudD4mJiBjbGllbnQpCisgICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiB7CiAg
ICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNTEsOSArNTEsOSBA
QCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CiB9CiAKLVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6
Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4g
Y2xpZW50KQorV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQogewotICAgIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKiBpbnN0YW5jZSA9IG5ldyBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcihjbGllbnQpOworICAgIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyKiBpbnN0YW5jZSA9IG5ldyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
cihXVEZNb3ZlKGNsaWVudCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4g
aW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaAppbmRleCAyYjhmNmE0ZWQzZmFlMDAyZTBhNTc2Yjdl
MTA0ZDk4MWFkYTMyMjQ0Li5kYjMwYjY1NGVhNjY2MDc0MjgwZmIzZmJhYjUwNDM4MGU0MzEyZjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgREVDTFNQRUNfVVVJRCgi
NUNBQ0Q2MzctRjgyRi00OTFGLTk0N0EtNURDQTM4QUEwRkVBIikgV2ViVVJMQXV0aGVudGljYXRp
b24KICAgICA6IHB1YmxpYyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIKIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIq
IGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+
KTsKKyAgICBzdGF0aWMgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIGNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4mJik7CiBwcml2
YXRlOgotICAgIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFBhc3NSZWZQdHI8
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+KTsKKyAgICBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYp
OwogICAgIH5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpOwogcHVibGljOgog
ICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGFhMzlkNTdlMTQyYzFlMWMw
NTU1NGQyZWJjNDNhMjI1YjY3ZmUwNGIuLjZiOGMzNzFkNjc5MDI3YTA4NmRlMTU1MDVlMTJiZTE5
YWExOWI3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC03NTI2LDkgKzc1MjYsOSBAQCBGdWxs
U2NyZWVuQ29udHJvbGxlciogV2ViVmlldzo6ZnVsbFNjcmVlbkNvbnRyb2xsZXIoKQogICAgIHJl
dHVybiBtX2Z1bGxzY3JlZW5Db250cm9sbGVyLmdldCgpOwogfQogCi12b2lkIFdlYlZpZXc6OnNl
dEZ1bGxTY3JlZW5FbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKK3ZvaWQgV2Vi
Vmlldzo6c2V0RnVsbFNjcmVlbkVsZW1lbnQoUmVmUHRyPEVsZW1lbnQ+JiYgZWxlbWVudCkKIHsK
LSAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50ID0gV1RGTW92ZShlbGVtZW50KTsKIH0KIAogSFdORCBXZWJWaWV3OjpmdWxsU2NyZWVuQ2xp
ZW50V2luZG93KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCAxYjc0M2E1YTE1N2MyM2YzMThk
NjUzNzhlYjE5YTlhYzRlNDhlMjE1Li5kOThkYWZmNTU4MzA4MWJlMTJiODViODM0ZTAzZGY3NmJj
MzM4ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBAIC01MTksNyArNTE5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50
KiwgYm9vbCB3aXRoS2V5Ym9hcmQpIGNvbnN0OwogICAgIGJvb2wgaXNGdWxsU2NyZWVuKCkgY29u
c3Q7CiAgICAgV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXIqIGZ1bGxTY3JlZW5Db250cm9s
bGVyKCk7Ci0gICAgdm9pZCBzZXRGdWxsU2NyZWVuRWxlbWVudChQYXNzUmVmUHRyPFdlYkNvcmU6
OkVsZW1lbnQ+KTsKKyAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbGVtZW50KFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiYmKTsKICAgICBXZWJDb3JlOjpFbGVtZW50KiBmdWxsU2NyZWVuRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCk7IH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310013</attachid>
            <date>2017-05-12 22:33:10 -0700</date>
            <delta_ts>2017-05-13 08:38:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172067-20170512223309.patch</filename>
            <type>text/plain</type>
            <size>49067</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmYwZGM1MDhm
MTU3YTM3MzA4ZTQ0NWRkMTgwZjkzNDBmZjQ4NGExOS4uMGMxMzc5ZjkxZDBkMmQ2Mjk3NDk3NGE4
YjI5YzZjMTE1ZGY0OWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCB1
c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUV2ZW50OjpET01FdmVudCk6CisgICAgICAgIChET01FdmVudDo6Y3JlYXRlSW5zdGFuY2Up
OgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoKKyAgICAgICAgKERPTVVJRXZlbnQ6OkRP
TVVJRXZlbnQpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6RE9NS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpET01Nb3VzZUV2ZW50KToKKyAgICAgICAgKERPTU11
dGF0aW9uRXZlbnQ6OkRPTU11dGF0aW9uRXZlbnQpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVu
dDo6RE9NT3ZlcmZsb3dFdmVudCk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpET01XaGVlbEV2
ZW50KToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2th
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlRnJvbUNhY2hl
KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyk6CisgICAgICAgIChXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5
QmFnLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAg
ICAgKiBXZWJBcmNoaXZlLmg6CisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkJhY2tG
b3J3YXJkTGlzdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNw
cDoKKyAgICAgICAgKEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VtYmVkZGVkV2lkZ2V0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVs
ZW1lbnQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBv
bGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICog
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKToKKyAgICAgICAg
KiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICogV2ViSGlzdG9yeUl0
ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKToKKyAgICAg
ICAgKFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0Rm9ybURhdGEpOgorICAgICAgICAoV2ViTXV0YWJsZVVS
TFJlcXVlc3Q6OmZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5oOgor
ICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJTY3JpcHRX
b3JsZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQpOgorICAg
ICAgICAoV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJTY3Jp
cHRXb3JsZC5oOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcik6CisgICAgICAgIChXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpzZXRGdWxsU2NyZWVuRWxlbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy5oOgorCiAyMDE3LTA1LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXggYWQ4NzY2YjMxYjU2ODNhNjlj
ZTU0NzViZjc3MDRiY2EzZGM4MzZkNC4uMDUyZDg1Y2M0MTViMzFkMDE5ZTRkYmEwNjllZjZkODBm
NWU2N2M1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgYm9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdAogdm9pZCBXZWJFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzLCBXZWJDb3JlOjpFdmVu
dCogZSkKIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGVQdHIoZSk7Ci0gICAgQ09NUHRy
PElET01FdmVudD4gZG9tRXZlbnQgPSBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2UoZVB0cik7Cisg
ICAgQ09NUHRyPElET01FdmVudD4gZG9tRXZlbnQgPSBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2Uo
V1RGTW92ZShlUHRyKSk7CiAgICAgbV9pRE9NRXZlbnRMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZG9t
RXZlbnQuZ2V0KCkpOwogfQogCkBAIC04OCwxNiArODgsMTYgQEAgUmVmPFdlYkV2ZW50TGlzdGVu
ZXI+IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciogZCkKIAogLy8g
RE9NRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ET01FdmVudDo6RE9NRXZlbnQoUGFzc1JlZlB0cjxXZWJD
b3JlOjpFdmVudD4gZSkKK0RPTUV2ZW50OjpET01FdmVudChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+
JiYgZSkKIHsKLSAgICBtX2V2ZW50ID0gZTsKKyAgICBtX2V2ZW50ID0gV1RGTW92ZShlKTsKIH0K
IAogRE9NRXZlbnQ6On5ET01FdmVudCgpCiB7CiB9CiAKLUlET01FdmVudCogRE9NRXZlbnQ6OmNy
ZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpCitJRE9NRXZlbnQqIERP
TUV2ZW50OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKIHsKICAg
ICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA3LDM2ICsxMDcsMzYgQEAg
SURPTUV2ZW50KiBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpF
dmVudD4gZSkKIAogICAgIHN3aXRjaCAoZS0+ZXZlbnRJbnRlcmZhY2UoKSkgewogICAgIGNhc2Ug
V2ViQ29yZTo6S2V5Ym9hcmRFdmVudEludGVyZmFjZVR5cGU6IHsKLSAgICAgICAgRE9NS2V5Ym9h
cmRFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NS2V5Ym9hcmRFdmVudChlKTsKKyAgICAgICAgRE9N
S2V5Ym9hcmRFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NS2V5Ym9hcmRFdmVudChXVEZNb3ZlKGUp
KTsKICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01LZXlib2Fy
ZEV2ZW50LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRJbnRlcmZhY2VUeXBlOiB7Ci0gICAgICAgIERPTU1vdXNl
RXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU1vdXNlRXZlbnQoZSk7CisgICAgICAgIERPTU1vdXNl
RXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU1vdXNlRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAg
IGhyID0gbmV3RXZlbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NTW91c2VFdmVudCwgKHZvaWQq
KikmZG9tRXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJDb3JlOjpN
dXRhdGlvbkV2ZW50SW50ZXJmYWNlVHlwZTogewotICAgICAgICBET01NdXRhdGlvbkV2ZW50KiBu
ZXdFdmVudCA9IG5ldyBET01NdXRhdGlvbkV2ZW50KGUpOworICAgICAgICBET01NdXRhdGlvbkV2
ZW50KiBuZXdFdmVudCA9IG5ldyBET01NdXRhdGlvbkV2ZW50KFdURk1vdmUoZSkpOwogICAgICAg
ICBociA9IG5ld0V2ZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTU11dGF0aW9uRXZlbnQsICh2
b2lkKiopJmRvbUV2ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViQ29y
ZTo6T3ZlcmZsb3dFdmVudEludGVyZmFjZVR5cGU6IHsKLSAgICAgICAgRE9NT3ZlcmZsb3dFdmVu
dCogbmV3RXZlbnQgPSBuZXcgRE9NT3ZlcmZsb3dFdmVudChlKTsKKyAgICAgICAgRE9NT3ZlcmZs
b3dFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NT3ZlcmZsb3dFdmVudChXVEZNb3ZlKGUpKTsKICAg
ICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01PdmVyZmxvd0V2ZW50
LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdl
YkNvcmU6OldoZWVsRXZlbnRJbnRlcmZhY2VUeXBlOiB7Ci0gICAgICAgIERPTVdoZWVsRXZlbnQq
IG5ld0V2ZW50ID0gbmV3IERPTVdoZWVsRXZlbnQoZSk7CisgICAgICAgIERPTVdoZWVsRXZlbnQq
IG5ld0V2ZW50ID0gbmV3IERPTVdoZWVsRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAgIGhyID0g
bmV3RXZlbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NV2hlZWxFdmVudCwgKHZvaWQqKikmZG9t
RXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYg
KGUtPmlzVUlFdmVudCgpKSB7Ci0gICAgICAgICAgICBET01VSUV2ZW50KiBuZXdFdmVudCA9IG5l
dyBET01VSUV2ZW50KGUpOworICAgICAgICAgICAgRE9NVUlFdmVudCogbmV3RXZlbnQgPSBuZXcg
RE9NVUlFdmVudChXVEZNb3ZlKGUpKTsKICAgICAgICAgICAgIGhyID0gbmV3RXZlbnQtPlF1ZXJ5
SW50ZXJmYWNlKElJRF9JRE9NVUlFdmVudCwgKHZvaWQqKikmZG9tRXZlbnQpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgRE9NRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTUV2ZW50KGUp
OworICAgICAgICAgICAgRE9NRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTUV2ZW50KFdURk1vdmUo
ZSkpOwogICAgICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01F
dmVudCwgKHZvaWQqKikmZG9tRXZlbnQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktpdC93aW4v
RE9NRXZlbnRzQ2xhc3Nlcy5oCmluZGV4IDdkZjgxM2I4MDMwNzQxMGNkZmE1Yzg3YjVmYmI0NjUw
NzVhNDkxMDMuLjNiNTNiNWViM2Y2YjNlMDUzYjA1NzI0MzJlMTkwZjJkM2E3MDc3MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5lci5oPgog
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IC8vIHtBQzNEMUJDMy00OTc2LTQ0MzEtOEExOS00ODEyQzVFRkUzOUN9CkBAIC0xMDksOSArMTA4
LDkgQEAgcHVibGljOgogY2xhc3MgRE9NRXZlbnQgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMg
SURPTUV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIElET01FdmVudCogY3JlYXRlSW5zdGFu
Y2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSk7CisgICAgc3RhdGljIElET01FdmVudCog
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiYmKTsKIHByb3RlY3RlZDoKLSAg
ICBET01FdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKTsKKyAgICBET01FdmVudChS
ZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYpOwogICAgIH5ET01FdmVudCgpOwogCiBwdWJsaWM6CkBA
IC0xODMsNyArMTgyLDkgQEAgcHJvdGVjdGVkOgogY2xhc3MgRE9NVUlFdmVudCA6IHB1YmxpYyBE
T01FdmVudCwgcHVibGljIElET01VSUV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgRE9NVUlFdmVudChQ
YXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKSA6IERPTUV2ZW50KGUpIHt9CisgICAgRE9NVUlF
dmVudChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01FdmVudChXVEZN
b3ZlKGUpKQorICAgIHsgfQogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtMjk4LDcgKzI5OSw5IEBAIHB1YmxpYzoKIGNs
YXNzIERPTUtleWJvYXJkRXZlbnQgOiBwdWJsaWMgRE9NVUlFdmVudCwgcHVibGljIElET01LZXli
b2FyZEV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgRE9NS2V5Ym9hcmRFdmVudChQYXNzUmVmUHRyPFdl
YkNvcmU6OkV2ZW50PiBlKSA6IERPTVVJRXZlbnQoZSkgeyB9CisgICAgRE9NS2V5Ym9hcmRFdmVu
dChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01VSUV2ZW50KFdURk1v
dmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC00NjQsNyArNDY3LDkgQEAgcHVibGljOgogY2xh
c3MgRE9NTW91c2VFdmVudCA6IHB1YmxpYyBET01VSUV2ZW50LCBwdWJsaWMgSURPTU1vdXNlRXZl
bnQKIHsKIHB1YmxpYzoKLSAgICBET01Nb3VzZUV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZl
bnQ+IGUpIDogRE9NVUlFdmVudChlKSB7IH0KKyAgICBET01Nb3VzZUV2ZW50KFJlZlB0cjxXZWJD
b3JlOjpFdmVudD4mJiBlKQorICAgICAgICA6IERPTVVJRXZlbnQoV1RGTW92ZShlKSkKKyAgICB7
IH0KIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKQEAgLTYzOSw3ICs2NDQsOSBAQCBwdWJsaWM6CiBjbGFzcyBET01NdXRhdGlv
bkV2ZW50IDogcHVibGljIERPTUV2ZW50LCBwdWJsaWMgSURPTU11dGF0aW9uRXZlbnQKIHsKIHB1
YmxpYzoKLSAgICBET01NdXRhdGlvbkV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUp
IDogRE9NRXZlbnQoZSkgeyB9CisgICAgRE9NTXV0YXRpb25FdmVudChSZWZQdHI8V2ViQ29yZTo6
RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01FdmVudChXVEZNb3ZlKGUpKQorICAgIHsgfQogCiAg
ICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOwpAQCAtNzUyLDcgKzc1OSw5IEBAIHB1YmxpYzoKIGNsYXNzIERPTU92ZXJmbG93RXZlbnQg
OiBwdWJsaWMgRE9NRXZlbnQsIHB1YmxpYyBJRE9NT3ZlcmZsb3dFdmVudAogewogcHVibGljOgot
ICAgIERPTU92ZXJmbG93RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBET01F
dmVudChlKSB7IH0KKyAgICBET01PdmVyZmxvd0V2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4m
JiBlKQorICAgICAgICA6IERPTUV2ZW50KFdURk1vdmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJ
VW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBA
IC04NjAsNyArODY5LDkgQEAgcHVibGljOgogY2xhc3MgRE9NV2hlZWxFdmVudCA6IHB1YmxpYyBE
T01VSUV2ZW50LCBwdWJsaWMgSURPTVdoZWVsRXZlbnQKIHsKIHB1YmxpYzoKLSAgICBET01XaGVl
bEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpIDogRE9NVUlFdmVudChlKSB7IH0K
KyAgICBET01XaGVlbEV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJiBlKQorICAgICAgICA6
IERPTVVJRXZlbnQoV1RGTW92ZShlKSkKKyAgICB7IH0KIAogICAgIC8vIElVbmtub3duCiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDJjMjA1MWRjZmU5ZTMwN2E3NGNiODhiNjlmYmVmMjhmOGFlODc2
Y2MuLjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsOCArMzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQotICAgIDogbV9idWZmZXIoYnVm
ZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOwpAQCAtNDQs
OSArNDQsOSBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZW1vcnlT
dHJlYW0oYnVmZmVyKTsKKyAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMjgsNyArMjI4LDcgQEAgSFJF
U1VMVCBNZW1vcnlTdHJlYW06OlN0YXQoX091dF8gU1RBVFNURyogcHN0YXRzdGcsIERXT1JEIC8q
Z3JmU3RhdEZsYWcqLykKIAogSFJFU1VMVCBNZW1vcnlTdHJlYW06OkNsb25lKF9DT01fT3V0cHRy
XyBJU3RyZWFtKiogcHBzdG0pCiB7Ci0gICAgTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSht
X2J1ZmZlcikuY29weVJlZlRvKHBwc3RtKTsKKyAgICBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKG1fYnVmZmVyLmNvcHlSZWYoKSkuY29weVJlZlRvKHBwc3RtKTsKICAgICAvLyBGSVhNRTog
TVNETiBzYXlzIHdlIHNob3VsZCBiZSByZXR1cm5pbmcgU1RHX0VfSU5TVUZGSUNJRU5UX01FTU9S
WSBpbnN0ZWFkIG9mIEVfT1VUT0ZNRU1PUlkgaGVyZS4KICAgICByZXR1cm4gKCpwcHN0bSkgPyBT
X09LIDogRV9PVVRPRk1FTU9SWTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01l
bW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggZjU1
OWM1ODA2NTUwOWViYTQzMmJhMDUwNTJjYjc5MWZlZDEyMWUzZS4uOTdmMWM5NzUwMzA4YzI2Zjlj
M2ExYTZkNDQ0ODU3M2I2OWJiOWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWVt
b3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTMw
LDE2ICszMCwxNSBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8V1RGL1JlZlB0ci5oPgogCiBjbGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgSVN0cmVh
bQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKTsKKyAgICBzdGF0
aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBNZW1vcnlTdHJlYW0oUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIHB1Ymxp
YzoKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRl
eCAxNjliMTk3MTYxNmJkNmE0NGM5MjExNTk3OWQyZjkyZmZiM2I5NTgwLi4xYTBmYmY2ZTY0YWJj
MzAzZWM3Y2U1ZmFhYmU1OWMwM2I0MTY3NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgUGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2goKQogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2th
Z2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlm
aWVkKTsKLSAgICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZSgpKSkKKyAg
ICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAg
ICAgICAgICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKQEAgLTMyNSwxNiArMzI1
LDEyIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYg
cGx1Z2lucykgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZChQYXNz
UmVmUHRyPFBsdWdpblBhY2thZ2U+IHBycFBhY2thZ2UpCitib29sIFBsdWdpbkRhdGFiYXNlOjph
ZGQoUmVmPFBsdWdpblBhY2thZ2U+JiYgcGFja2FnZSkKIHsKLSAgICBBU1NFUlRfQVJHKHBycFBh
Y2thZ2UsIHBycFBhY2thZ2UpOwotCi0gICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2Ug
PSBwcnBQYWNrYWdlOwotCi0gICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3RW50
cnkpCisgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UuY29weVJlZigpKS5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2th
Z2UtPnBhdGgoKSwgcGFja2FnZSk7CisgICAgbV9wbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5w
YXRoKCksIHBhY2thZ2UuY29weVJlZigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI5
LDkgKzUyNSw5IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZSgpCiAgICAgICAgIGlmIChtX3BsdWdpbkRpcmVjdG9yaWVzLmZpbmQocGx1Z2luRGlyZWN0
b3J5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRl
UGFja2FnZUZyb21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNj
KTsKKyAgICAgICAgYXV0byBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZy
b21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsKIAotICAg
ICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5
KSB7CisgICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UuY29w
eVJlZigpKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhU
aW1lcy5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAg
ICAgICAgICBjYWNoZWRQbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2Up
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgK
aW5kZXggZWI2YTg0MTEyNGQ2OTc3NWI2Y2NjN2JlNDNmYmMwOWRiZjA5NzcxMi4uMDEzNzA4ZWJk
NzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAKICAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnaW4gd2FzIGFj
dHVhbGx5IGFkZGVkIG9yIG5vdCAoaXQgd29uJ3QgYmUgYWRkZWQgaWYgaXQncyBhIGR1cGxpY2F0
ZSBvZiBhbiBleGlzdGluZyBwbHVnaW4pLgotICAgICAgICBib29sIGFkZChQYXNzUmVmUHRyPFBs
dWdpblBhY2thZ2U+KTsKKyAgICAgICAgYm9vbCBhZGQoUmVmPFBsdWdpblBhY2thZ2U+JiYpOwog
ICAgICAgICB2b2lkIHJlbW92ZShQbHVnaW5QYWNrYWdlKik7CiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICAgICAgICAgdm9pZCBsb2FkUGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
CmluZGV4IDUwZjFiMzMwYTNiNDNhOWRhNzg2YzE5NWEwNzljNzhiNzI0NzRmODYuLmI4NDg1NDYx
NGYzNTg0ZWVkMDgzMWFkOTY0NDc3ZjEyMWQwNmVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMTYzLDI2ICsxNjMsMjYgQEAgdm9pZCBQbHVn
aW5QYWNrYWdlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2lzRW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3Jl
YXRlUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVk
KQorUmVmUHRyPFBsdWdpblBhY2thZ2U+IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCkKIHsKICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IGFkb3B0UmVmKG5ldyBQbHVnaW5QYWNrYWdlKHBh
dGgsIGxhc3RNb2RpZmllZCkpOwogCiAgICAgaWYgKCFwYWNrYWdlLT5mZXRjaEluZm8oKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHBh
Y2thZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBwYWNrYWdlOwogfQogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLVBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4g
UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQorUmVmPFBs
dWdpblBhY2thZ2U+IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlw
dGlvbikKIHsKLSAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IGFkb3B0UmVmKG5l
dyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2RpZmllZCkpOworICAgIFJlZjxQbHVnaW5QYWNr
YWdlPiBwYWNrYWdlID0gYWRvcHRSZWYoKm5ldyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2Rp
ZmllZCkpOwogICAgIHBhY2thZ2UtPm1fbmFtZSA9IG5hbWU7CiAgICAgcGFja2FnZS0+bV9kZXNj
cmlwdGlvbiA9IGRlc2NyaXB0aW9uOwogICAgIHBhY2thZ2UtPmRldGVybWluZU1vZHVsZVZlcnNp
b25Gcm9tRGVzY3JpcHRpb24oKTsKICAgICBwYWNrYWdlLT5zZXRNSU1FRGVzY3JpcHRpb24obWlt
ZURlc2NyaXB0aW9uKTsKICAgICBwYWNrYWdlLT5tX2luZm9Jc0Zyb21DYWNoZSA9IHRydWU7Ci0g
ICAgcmV0dXJuIHBhY2thZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBwYWNrYWdlOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2Fn
ZS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggZDc2
ZWFmZDU3OWJiMzYwZjc3NDJlZWE0ZGNjMTEyYThlNWM3MTVhNS4uZjEyNzcyNWQyMDM4Mjc3Y2M1
N2ZiYjkxNjhiZTIxZjEyYjA5ZTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1
Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5QYWNrYWdlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFBsdWdpblBhY2thZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5QYWNrYWdlPiB7CiAg
ICAgcHVibGljOgogICAgICAgICB+UGx1Z2luUGFja2FnZSgpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBjcmVhdGVQYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgdGltZV90JiBsYXN0TW9kaWZpZWQpOworICAgICAgICBzdGF0aWMgUmVmUHRyPFBsdWdp
blBhY2thZ2U+IGNyZWF0ZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3Qm
IGxhc3RNb2RpZmllZCk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNI
RSkKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gY3JlYXRlUGFja2Fn
ZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0
cmluZyYgbWltZURlc2NyaXB0aW9uKTsKKyAgICAgICAgc3RhdGljIFJlZjxQbHVnaW5QYWNrYWdl
PiBjcmVhdGVQYWNrYWdlRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90
JiBsYXN0TW9kaWZpZWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24pOwogI2VuZGlmCiAKICAgICAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRleCA0MmM2ZGRmODAzNzk2NDA4NDJiODEx
ODc0ZWUyODVkZjZlYmNlYTQ5Li42MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFl
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTU2LDkg
KzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGx1Z2luU3RyZWFtIDog
cHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luU3RyZWFtPiwgcHJpdmF0ZSBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5TdHJlYW0+IGNyZWF0ZShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNh
dGlvbiwgdm9pZCogbm90aWZ5RGF0YSwgY29uc3QgTlBQbHVnaW5GdW5jcyogZnVuY3Rpb25zLCBO
UFAgaW5zdGFuY2UsIGNvbnN0IFBsdWdpblF1aXJrU2V0JiBxdWlya3MpCisgICAgICAgIHN0YXRp
YyBSZWY8UGx1Z2luU3RyZWFtPiBjcmVhdGUoUGx1Z2luU3RyZWFtQ2xpZW50KiBjbGllbnQsIEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNlbmROb3Rp
ZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEsIGNvbnN0IE5QUGx1Z2luRnVuY3MqIGZ1bmN0aW9u
cywgTlBQIGluc3RhbmNlLCBjb25zdCBQbHVnaW5RdWlya1NldCYgcXVpcmtzKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblN0cmVhbShjbGllbnQsIGZy
YW1lLCByZXF1ZXN0LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBmdW5jdGlvbnMsIGlu
c3RhbmNlLCBxdWlya3MpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdp
blN0cmVhbShjbGllbnQsIGZyYW1lLCByZXF1ZXN0LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlE
YXRhLCBmdW5jdGlvbnMsIGluc3RhbmNlLCBxdWlya3MpKTsKICAgICAgICAgfQogICAgICAgICB2
aXJ0dWFsIH5QbHVnaW5TdHJlYW0oKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggZTM0NzAyNjVmYzhiOTRkOGMyNTA1ZmNkNzRhM2Y0
ZTRlZTk0Y2I2MC4uNzIxZDFjZDUyZDI2YjljM2ZiZTJhNzk5YThkZDNhM2U2N2UzMTY2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtMzksMTAgKzM5
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJBY3Rpb25Qcm9wZXJ0eUJh
ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2Vi
QWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0sIFBhc3NSZWZQ
dHI8RnJhbWU+IGZyYW1lKQorV2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5
QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2FjdGlvbihhY3Rpb24p
Ci0gICAgLCBtX2Zvcm0oZm9ybSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2Zvcm0o
V1RGTW92ZShmb3JtKSkKKyAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5
QmFnIik7CkBAIC01NCw5ICs1NCw5IEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9u
UHJvcGVydHlCYWcoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJv
cGVydHlCYWciKTsKIH0KIAotV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5
QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtLCBQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK1dl
YkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYm
IGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKIHsKLSAgICBXZWJBY3Rpb25Qcm9wZXJ0eUJh
ZyogaW5zdGFuY2UgPSBuZXcgV2ViQWN0aW9uUHJvcGVydHlCYWcoYWN0aW9uLCBmb3JtLCBmcmFt
ZSk7IAorICAgIFdlYkFjdGlvblByb3BlcnR5QmFnKiBpbnN0YW5jZSA9IG5ldyBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZyhhY3Rpb24sIFdURk1vdmUoZm9ybSksIFdURk1vdmUoZnJhbWUpKTsKICAgICBp
bnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmgKaW5kZXggMzc1NzE1MWI5ODEwNTliYWQ4NTc4YmFm
N2NiNjUwMzkyZmQ5Y2Q5MC4uMGY5ZjAxNTIyNmRjYWVkM2YyNzdkNDljN2U4NzQ2NDNhNTVmOWZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5oCkBAIC0zMywxMCAr
MzMsMTAgQEAKIAogY2xhc3MgV2ViQWN0aW9uUHJvcGVydHlCYWcgOiBwdWJsaWMgSVByb3BlcnR5
QmFnIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQWN0aW9uUHJvcGVydHlCYWcqIGNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBz
dGF0aWMgV2ViQWN0aW9uUHJvcGVydHlCYWcqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYmLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYkFjdGlvblByb3Bl
cnR5QmFnKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVm
UHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mJiwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYm
KTsKICAgICB+V2ViQWN0aW9uUHJvcGVydHlCYWcoKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCBhZDBjOTg2ZTg4ZDA3ZWQ2ZmJkYzkxMzM1ZmZlY2IwYWVlZTMzYzQx
Li4xODYzNzQ4N2JmOGEwNDc5NmFmZjJhNGE4YjY4OTU2MjI0Y2E1MDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJBcmNoaXZlLmNwcApAQCAtNDEsMTYgKzQxLDE2IEBAIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6
OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmUq
IFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y29yZUFyY2hpdmUpCitXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKIHsKLSAgICBXZWJBcmNoaXZlKiBp
bnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKGNvcmVBcmNoaXZlKTsKKyAgICBXZWJBcmNoaXZlKiBp
bnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKFdURk1vdmUoY29yZUFyY2hpdmUpKTsKIAogICAgIGlu
c3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmU6
OldlYkFyY2hpdmUoUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkKLSAg
ICA6IG1fYXJjaGl2ZShjb3JlQXJjaGl2ZSkKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+JiYgY29yZUFyY2hpdmUpCisgICAgOiBtX2FyY2hpdmUoV1RGTW92
ZShjb3JlQXJjaGl2ZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBIUkVTVUxUIFdlYkFy
Y2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEu
Z2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENG
RGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlcikuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaAppbmRleCA1Y2U2MGQ4YjBlMjYxNTJiMDE1ZDYw
MDNjMzk2YjYzOGYzZjlhYTY2Li5lMWFjYWZmZDI4MjdhOWNjZWNkODFiODA1MzYzMmU3MGZiNDli
ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJXZWJLaXQuaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw5ICszOCw5IEBAIGNsYXNz
IFdlYkFyY2hpdmUgOiBwdWJsaWMgSVdlYkFyY2hpdmUKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
V2ViQXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViQXJjaGl2ZSogY3Jl
YXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CisgICAg
c3RhdGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJBcmNoaXZlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOworICAgIFdlYkFyY2hpdmUoUmVmUHRyPFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU+JiYpOwogICAgIH5XZWJBcmNoaXZlKCk7CiAKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDRlYTIwMGQxYmNkNWRi
MmM5Y2E2YzE5Y2U3OTkwNmI1NDkxMTdkMDYuLjVhYTczZDViYmQ5ZDI3MWNkZWJiOTdmYzc1NWUx
ODUzODgyMTMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApA
QCAtNDcsOCArNDcsOCBAQCBzdGF0aWMgSGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNr
Rm9yd2FyZExpc3QqPiYgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKQogICAgIHJldHVybiBzdGF0
aWNCYWNrRm9yd2FyZExpc3RXcmFwcGVyczsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJC
YWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkTGlz
dCkKLSAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGJhY2tGb3J3YXJkTGlzdCkKK1dlYkJhY2tGb3J3
YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFj
a0ZvcndhcmRMaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QoV1RGTW92ZShiYWNrRm9yd2Fy
ZExpc3QpKQogewogICAgIEFTU0VSVCghYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5jb250YWlu
cyhtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSkpOwogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJz
KCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsKQEAgLTY4LDEyICs2OCwxMiBA
QCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CiB9CiAKLVdlYkJhY2tGb3J3
YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJh
Y2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0KQorV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdCogaW5zdGFuY2UgPSBi
YWNrRm9yd2FyZExpc3RXcmFwcGVycygpLmdldChiYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2UgPSBuZXcgV2ViQmFja0ZvcndhcmRM
aXN0KGJhY2tGb3J3YXJkTGlzdCk7CisgICAgICAgIGluc3RhbmNlID0gbmV3IFdlYkJhY2tGb3J3
YXJkTGlzdChXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdCkpOwogCiAgICAgaW5zdGFuY2UtPkFkZFJl
ZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRM
aXN0LmgKaW5kZXggOWRlNjhiMzlkZjBmYjZlMTI1M2Q5OGFmODQxNWQ4NmNkYzZmMDMyYy4uYmZh
MjUxNjc0OWZkYTQ4ZmRhNWIxMjM4YjE5ZDY0MTQzOWI2ZDAyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkhp
c3RvcnlJdGVtLmgiCiAKLSNpbmNsdWRlIDxXVEYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPFdU
Ri9SZWZQdHIuaD4KIAogY2xhc3MgQmFja0ZvcndhcmRMaXN0OwpAQCAtMzcsOSArMzYsOSBAQCBj
bGFzcyBCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMg
SVdlYkJhY2tGb3J3YXJkTGlzdCwgSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVm
UHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAgIHN0YXRpYyBXZWJCYWNrRm9yd2FyZExpc3QqIGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYpOwogcHJvdGVjdGVkOgotICAg
IFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAgIFdl
YkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmKTsKICAgICB+V2ViQmFj
a0ZvcndhcmRMaXN0KCk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAppbmRleCAxNDcyM2ZkOWFmM2E0NjIzOWVi
ODAzZDM1MzBiYWRmZDAzYmNiMmRhLi41YTZmMTEyMDNjYmU5N2RjMzZhMTNjNGY2ODJiNzM4MDlk
OWVhNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1i
ZWRkZWRXaWRnZXQuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVBhc3NSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IEVtYmVkZGVkV2lkZ2V0OjpjcmVh
dGUoSVdlYkVtYmVkZGVkVmlldyogdmlldywgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIEhX
TkQgcGFyZW50V2luZG93LCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmPEVtYmVkZGVkV2lkZ2V0
PiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKElXZWJFbWJlZGRlZFZpZXcqIHZpZXcsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBIV05EIHBhcmVudFdpbmRvdywgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKLSAgICBSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IHdpZGdldCA9IGFkb3B0UmVmKG5ldyBF
bWJlZGRlZFdpZGdldCh2aWV3LCBlbGVtZW50KSk7CisgICAgYXV0byB3aWRnZXQgPSBhZG9wdFJl
ZigqbmV3IEVtYmVkZGVkV2lkZ2V0KHZpZXcsIGVsZW1lbnQpKTsKIAogICAgIHdpZGdldC0+Y3Jl
YXRlV2luZG93KHBhcmVudFdpbmRvdywgc2l6ZSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogRW1iZWRkZWRXaWRnZXQ6On5FbWJlZGRlZFdp
ZGdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRX
aWRnZXQuaAppbmRleCBmNjQ3YjNlMWNjOTc3MjM1NGM4NTY3MDc1ZDJiNjc1MTBjZjg5M2I3Li4y
NTI3OTgyY2VjM2RiZDVmNTcwZTJmNWJiMjc4YTQxYzhiMjhlZmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmgKQEAgLTQwLDcgKzQw
LDcgQEAgaW50ZXJmYWNlIElXZWJFbWJlZGRlZFZpZXc7CiAKIGNsYXNzIEVtYmVkZGVkV2lkZ2V0
IDogcHVibGljIFdlYkNvcmU6OldpZGdldCwgcHVibGljIFdlYkNvcmU6OlBsdWdpbk1hbnVhbExv
YWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IGNy
ZWF0ZShJV2ViRW1iZWRkZWRWaWV3KiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBIV05E
IHBhcmVudFdpbmRvdywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHN0YXRpYyBSZWY8
RW1iZWRkZWRXaWRnZXQ+IGNyZWF0ZShJV2ViRW1iZWRkZWRWaWV3KiwgV2ViQ29yZTo6SFRNTFBs
dWdJbkVsZW1lbnQqLCBIV05EIHBhcmVudFdpbmRvdywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OwogICAgIH5FbWJlZGRlZFdpZGdldCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4MDliOGE3OWMz
NGU3YmFkYTVhNWRjZDI1ZGI5MzI2MjFlYTQ5YWMxLi44NjY3ODdjMDcwZjRiZTgzODU3MGEwZmQ3
ZGZlNmJkNjEyMWQ4M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRm9jdXNEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogY2xhc3MgV2ViVmlldzsKIGNsYXNzIFdlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYmExNDM1MTk2
NTkyNjZhNjUwNzVjZjQ5MGE1NDFmZDQyZDU4MTllZS4uYmM5MGM5NGZkMjY5M2MzZGIyMGM0MGIw
NjgzZGUyMzdiZTYxZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNTY1LDcgKzU2NSw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0
KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3Zv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJT
VFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5
c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01ODIsNyArNTgy
LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUsIEIKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KGJhc2VDb3JlVVJMKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBt
aW1lVHlwZVN0cmluZywgZGF0YS0+c2l6ZSgpLCBlbmNvZGluZ1N0cmluZyk7Ci0gICAgU3Vic3Rp
dHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoZGF0YSwgZmFpbGluZ0NvcmVVUkwsIHJlc3BvbnNlLCBT
dWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOworICAgIFN1
YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdURk1vdmUoZGF0YSksIGZhaWxpbmdDb3JlVVJM
LCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuKTsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gSVdlYkZyYW1l
IG1ldGhvZHMsIHNvIGRvbid0IEFTU0VSVCB0aGF0IHRoZSBGcmFtZSBwb2ludGVyIGlzbid0IG51
bGwuCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpKQpAQCAtNTkxLDcgKzU5
MSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCCiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAKICAgICBTVEFUU1RHIHN0YXQ7
CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkg
ewpAQCAtNjA1LDcgKzYwNSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIsIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTEwMzEsNyArMTAzMSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmRlc2Vs
ZWN0QWxsKCkKIAogLy8gV2ViRnJhbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQoSVdlYlZpZXcqIHdlYlZpZXcsIFBh
Z2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQorUmVmPEZyYW1l
PiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiB3ZWJW
aWV3LCBQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsK
ICAgICB3ZWJWaWV3LT5RdWVyeUludGVyZmFjZSgmZC0+d2ViVmlldyk7CiAgICAgZC0+d2ViVmll
dy0+UmVsZWFzZSgpOyAvLyBkb24ndCBob2xkIHRoZSBleHRyYSByZWYKQEAgLTEwNDAsOSArMTA0
MCw5IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25l
ckVsZW1lbnQoSVdlYlZpZXcqIHdlYlZpZXcsIFBhCiAgICAgZC0+d2ViVmlldy0+dmlld1dpbmRv
dygmdmlld1dpbmRvdyk7CiAKICAgICB0aGlzLT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlz
IHJlZiBpbiBmcmFtZUxvYWRlckRlc3Ryb3llZCgpCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9
IEZyYW1lOjpjcmVhdGUocGFnZSwgb3duZXJFbGVtZW50LCBuZXcgV2ViRnJhbWVMb2FkZXJDbGll
bnQodGhpcykpOwotICAgIGQtPmZyYW1lID0gZnJhbWUuZ2V0KCk7Ci0gICAgcmV0dXJuIGZyYW1l
LnJlbGVhc2UoKTsKKyAgICBhdXRvIGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCBvd25lckVs
ZW1lbnQsIG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudCh0aGlzKSk7CisgICAgZC0+ZnJhbWUgPSBm
cmFtZS5wdHIoKTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmluaXRX
aXRoV2ViVmlldyhJV2ViVmlldyogd2ViVmlldywgUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5o
CmluZGV4IGE0ZDkxOTFmZWU0ZTQxYWFhMzQ3NWNhYWI1M2ZiNjkyYTk0YTc0ZTQuLmRiZWE2OThh
NTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAt
MTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0
cm95ZWQoKTsKIAogICAgIC8vIFdlYkZyYW1lCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiwgV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOworICAgIFJlZjxXZWJDb3JlOjpG
cmFtZT4gY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiwgV2ViQ29yZTo6
UGFnZSosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOwogICAgIHZvaWQgaW5pdFdp
dGhXZWJWaWV3KElXZWJWaWV3KiwgV2ViQ29yZTo6UGFnZSopOwogICAgIFdlYkNvcmU6OkZyYW1l
KiBpbXBsKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0xOTksNyArMTk5LDcgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3Ry
aW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2
b2lkIGxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgQlNUUiBtaW1l
VHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VS
TCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQ
YWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGlu
ZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNv
cmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwCmluZGV4IGYwODViMjgxZTc4Yzk3ZTQ0NjY5ODNhYzMxYzMyZDIxZjE0YzYxMDUu
LjJkNmY2OWVhNDVjNGNjMjY3NjM2MDQ0NTgxZTAzNGE3MzA1NDc3MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zNSw4ICszNSw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihQYXNz
UmVmUHRyPEZyYW1lPiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCitXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkK
KyAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKQEAgLTQ4
LDkgKzQ4LDkgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVu
ZXIoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ciIpOwogfQogCi1XZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVy
OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK1dlYkZyYW1lUG9saWN5
TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxG
cmFtZT4mJiBmcmFtZSkKIHsKLSAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBpbnN0YW5jZSA9
IG5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKGZyYW1lKTsKKyAgICBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyKiBpbnN0YW5jZSA9IG5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnJh
bWUpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oCmluZGV4IGQzZjY3Zjkw
MGZlZjUwNzliMjhlODIyZmQ2NDZjM2NjM2Y5NzA5OTIuLjAyYmM0Y2FhYjY1OWUyOTk4NjY4Y2Q4
MTIzNDM4NjM2OTE2YmYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cl9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgpAQCAtMzgsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXIgOiBwdWJsaWMgSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIs
IHB1YmxpYyBJV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnJhbWU+KTsKKyAgICBzdGF0aWMgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4mJik7CiAgICAgfldlYkZyYW1l
UG9saWN5TGlzdGVuZXIoKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCA4MDZlZGY2ZTM4MjI3MWZhYjVh
OWFmMTcyODMyYTZlM2U5Y2ExMzZkLi45Nzc1NWE5ZjZlMTI4ZGI3NzkwZTliMGIxMTIzMWRkODZj
Mzc2ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiAvLyBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ09NUHRyPFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6
OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGdlb2xvY2F0aW9uKQorQ09N
UHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxHZW9sb2NhdGlvbj4mJiBnZW9sb2NhdGlvbikK
IHsKLSAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoZ2VvbG9jYXRp
b24pOworICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSk7CiB9CiAKLVdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbj4gZ2VvbG9jYXRp
b24pCitXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJiBnZW9sb2NhdGlvbikKICAgICA6IG1fcmVmQ291
bnQoMCkKLSAgICAsIG1fZ2VvbG9jYXRpb24oZ2VvbG9jYXRpb24pCisgICAgLCBtX2dlb2xvY2F0
aW9uKFdURk1vdmUoZ2VvbG9jYXRpb24pKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgKaW5kZXgg
ZmNlNWI1NTMzNTAzNDJkODEwMjIzZjAwZWIyNmEwZjBlMDllM2M4MC4uMDdmOWFmZTNhZjYzNzY3
YTQ2ODExMWUzYWUwYWU4ZGU3YmMwYmU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzcsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBwdWJsaWMgSVdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lcj4gY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4p
OworICAgIHN0YXRpYyBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gY3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uPiYmKTsKIAogICAgIC8vIElVbmtu
b3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTQ5
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkZW55KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihQ
YXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uPik7CisgICAgV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcihSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+JiYpOwogICAgIH5XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKCk7CiAKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNiZTc4MWU4ZDg5ZDk4Y2I2ODUx
YjA1YmFmNGU4MzNjMjBmNzIwYzIuLjlmY2YwM2RjMDMwZTU1NDQ2MDJlMjE4YTJkMThkZTBhMWFk
ZGM2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTQ2LDggKzQ2LDgg
QEAgc3RhdGljIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+JiBoaXN0b3J5
SXRlbVdyYXBwZXJzKCkKICAgICByZXR1cm4gc3RhdGljSGlzdG9yeUl0ZW1XcmFwcGVyczsKIH0K
IAotV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+
IGhpc3RvcnlJdGVtKQotICAgIDogbV9oaXN0b3J5SXRlbShoaXN0b3J5SXRlbSkKK1dlYkhpc3Rv
cnlJdGVtOjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0p
CisgICAgOiBtX2hpc3RvcnlJdGVtKFdURk1vdmUoaGlzdG9yeUl0ZW0pKQogewogICAgIEFTU0VS
VCghaGlzdG9yeUl0ZW1XcmFwcGVycygpLmNvbnRhaW5zKG1faGlzdG9yeUl0ZW0uZ2V0KCkpKTsK
ICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMp
OwpAQCAtNzIsMTQgKzcyLDE0IEBAIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3Jl
YXRlSW5zdGFuY2UoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotV2ViSGlzdG9yeUl0ZW0q
IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBo
aXN0b3J5SXRlbSkKK1dlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJdGVtKQogewogICAgIFdlYkhpc3RvcnlJ
dGVtKiBpbnN0YW5jZTsKIAotICAgIGluc3RhbmNlID0gaGlzdG9yeUl0ZW1XcmFwcGVycygpLmdl
dChoaXN0b3J5SXRlbS5nZXQoKSk7CisgICAgaW5zdGFuY2UgPSBoaXN0b3J5SXRlbVdyYXBwZXJz
KCkuZ2V0KGhpc3RvcnlJdGVtLnB0cigpKTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAg
IGluc3RhbmNlID0gbmV3IFdlYkhpc3RvcnlJdGVtKGhpc3RvcnlJdGVtKTsKKyAgICAgICAgaW5z
dGFuY2UgPSBuZXcgV2ViSGlzdG9yeUl0ZW0oV1RGTW92ZShoaXN0b3J5SXRlbSkpOwogCiAgICAg
aW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJI
aXN0b3J5SXRlbS5oCmluZGV4IDIwZGY5YWNiNjBiYTFkZTZlNGU1ZGJhYTk3MjU0MmYzNjI5OGNl
OWIuLmIzODY1NzAzZWRjYzFhOWNhN2YzZGZmZDZhZTMxODNkNjJkMTMwODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViSGlzdG9yeUl0ZW0uaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIldlYktpdC5o
IgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsOSArNDIsOSBAQCBjbGFzcyBXZWJIaXN0b3J5
SXRlbSA6IHB1YmxpYyBJV2ViSGlzdG9yeUl0ZW0sIElXZWJIaXN0b3J5SXRlbVByaXZhdGUKIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViSGlzdG9yeUl0ZW0qIGNyZWF0ZUluc3RhbmNlKCk7Ci0g
ICAgc3RhdGljIFdlYkhpc3RvcnlJdGVtKiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPik7CisgICAgc3RhdGljIFdlYkhpc3RvcnlJdGVtKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpOwogcHJvdGVjdGVkOgotICAgIFdl
Ykhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsKKyAgICBXZWJI
aXN0b3J5SXRlbShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpOwogICAgIH5XZWJIaXN0
b3J5SXRlbSgpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHAKaW5kZXggZDVkNjJhZmQ1ZmU1OGVlMTc5NjJiODUyZTkwZjFhNzA5NTc4MjVjMy4u
M2YzNmYyZWM3YjNkNTFhNzQ0YjBjOWEzNDc5MDhkN2NjYTJjNDRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMzk0LDEyICszOTQsMTIgQEAgSFJF
U1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkoX0NPTV9PdXRwdHJfb3B0XyBJ
V2ViTXV0YWJsZVVSTFJlcXVlc3QKIAogLy8gSVdlYk11dGFibGVVUkxSZXF1ZXN0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6c2V0Rm9ybURhdGEoY29uc3QgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
ZGF0YSkKK3ZvaWQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEZvcm1EYXRhKFJlZlB0cjxGb3Jt
RGF0YT4mJiBkYXRhKQogewotICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShkYXRhKTsKKyAgICBt
X3JlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7CiB9CiAKLWNvbnN0IFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpmb3JtRGF0YSgpIGNvbnN0Citjb25z
dCBSZWZQdHI8Rm9ybURhdGE+IFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpmb3JtRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcmVxdWVzdC5odHRwQm9keSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmgKaW5kZXggNzc1MGFkYjIxMzc4ZGYxNTVjNGRmZDhjYTdk
YTY4NTFjNDU1ODBhNi4uMDQxYzkwOTIxODRiYzRjNjVjN2ZiMTMzZTEwNjE3ZmI4OTgyYjM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oCkBAIC05OSw4ICs5OSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gQ0ZVUkxSZXF1ZXN0UmVmIFNU
RE1FVEhPRENBTExUWVBFIGNmUmVxdWVzdCgpOwogCiAgICAgLy8gV2ViTXV0YWJsZVVSTFJlcXVl
c3QKLSAgICB2b2lkIHNldEZvcm1EYXRhKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURh
dGE+IGRhdGEpOwotICAgIGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IGZvcm1E
YXRhKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGb3JtRGF0YShSZWZQdHI8V2ViQ29yZTo6Rm9ybURh
dGE+JiYpOworICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGb3JtRGF0YT4gZm9ybURhdGEoKSBj
b25zdDsKICAgICAKICAgICBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVy
RmllbGRzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5ZDc1ZjJm
NWIxYzQ1ZDgxMDM4ZjMzODAxZjAwZjE0ZmI2OTc2YTI4Li5iMjkyZGRlN2RjY2VmNjJmY2E3M2Iw
YzRjYjRiYWIyYWRjNWJmZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw5
ICs1MSw5IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNl
OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSog
V2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0g
ICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShkYXRhKTsKKyAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0g
PSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCiAgICAgV2Vi
UmVzb3VyY2UqIGluc3RhbmNlID0gbmV3IFdlYlJlc291cmNlKG1lbW9yeVN0cmVhbS5nZXQoKSwg
cmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKSwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJS
ZXNvdXJjZS5oCmluZGV4IDM0ZjYzMmQ5ZmJmMjk4NGNlZGJlODdiNTAyYThjYjY1MGYwY2ExOWYu
LmI4YzdkY2NiMDM3NDlhYjc4NzNlMzdmZmEyOWYyNTJjNjUzYmViYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
UmVzb3VyY2UuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBjbGFzcyBX
ZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBX
ZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKKyAg
ICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIHByb3RlY3Rl
ZDoKICAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291
cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKaW5kZXggMzI5YjI2ZDNlNWVm
YTQ4N2U3OGFhODBkZDRjNjI2NTQ1ZGM4YmIyNS4uZDVhYjRhZTdkN2JiNmU1YzdhNjk4MTQ2MmYw
NzEyNmU3MzBhMmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29y
bGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtMzgs
OCArMzgsOCBAQCBzdGF0aWMgV29ybGRNYXAmIGFsbFdvcmxkcygpCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotaW5saW5lIFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChQYXNzUmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4gd29ybGQpCi0gICAgOiBtX3dvcmxkKHdvcmxkKQoraW5saW5lIFdlYlNj
cmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxk
KQorICAgIDogbV93b3JsZChXVEZNb3ZlKHdvcmxkKSkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxk
LCBtX3dvcmxkKTsKIApAQCAtNzAsOSArNzAsOSBAQCBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IFdl
YlNjcmlwdFdvcmxkOjpjcmVhdGVJbnN0YW5jZSgpCiAgICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNl
KFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCkpOwogfQogCi1DT01QdHI8V2ViU2NyaXB0
V29ybGQ+IFdlYlNjcmlwdFdvcmxkOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPERPTVdyYXBw
ZXJXb3JsZD4gd29ybGQpCitDT01QdHI8V2ViU2NyaXB0V29ybGQ+IFdlYlNjcmlwdFdvcmxkOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQogewotICAgIHJl
dHVybiBuZXcgV2ViU2NyaXB0V29ybGQod29ybGQpOworICAgIHJldHVybiBuZXcgV2ViU2NyaXB0
V29ybGQoV1RGTW92ZSh3b3JsZCkpOwogfQogCiBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IFdlYlNj
cmlwdFdvcmxkOjpmaW5kT3JDcmVhdGVXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuaCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlNjcmlwdFdvcmxkLmgKaW5kZXggNmM1ZjEzYzAwNDhkYjJlZmJmNzE4YTU4ZjYw
ODI0NGE2NGFiMjM2NC4uOWNhYmEyZTBjMGYyNzgwMTdjMjcxMzc3ZjczMjE3NjhjODhkYmNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIHdvcmxkKCkgY29uc3QgeyByZXR1cm4gKm1f
d29ybGQ7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgQ09NUHRyPFdlYlNjcmlwdFdvcmxkPiBj
cmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZD4pOworICAg
IHN0YXRpYyBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ+JiYpOwogCi0gICAgV2ViU2NyaXB0V29ybGQoUGFzc1JlZlB0
cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+KTsKKyAgICBXZWJTY3JpcHRXb3JsZChSZWZQdHI8
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkPiYmKTsKICAgICB+V2ViU2NyaXB0V29ybGQoKTsKIAog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3Bw
CmluZGV4IDJiZjAzOWUyNGZiYmUxNWVlYTQ3ZjlkMjU3MDBiMWVhMjlkZmNkZTYuLjM1YTg0NWVk
NjkzY2EwNWRjNzZkZTYzNTY3YmNlNmZlOWRkY2E2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKQEAg
LTM3LDggKzM3LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFBhc3NS
ZWZQdHI8QXV0aGVudGljYXRpb25DbGllbnQ+IGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVu
dCkKK1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50
KQorICAgIDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTUxLDkgKzUxLDkgQEAgV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
cigpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlciIpOwogfQogCi1XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ciogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+IGNsaWVudCkKK1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xp
ZW50PiYmIGNsaWVudCkKIHsKLSAgICBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ciogaW5zdGFuY2UgPSBuZXcgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoY2xp
ZW50KTsKKyAgICBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogaW5zdGFuY2Ug
PSBuZXcgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoV1RGTW92ZShjbGllbnQp
KTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyLmgKaW5kZXggMmI4ZjZhNGVkM2ZhZTAwMmUwYTU3NmI3ZTEwNGQ5ODFhZGEzMjI0NC4u
ZGIzMGI2NTRlYTY2NjA3NDI4MGZiM2ZiYWI1MDQzODBlNDMxMmY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5o
CkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIjVDQUNENjM3LUY4MkYtNDkx
Ri05NDdBLTVEQ0EzOEFBMEZFQSIpIFdlYlVSTEF1dGhlbnRpY2F0aW9uCiAgICAgOiBwdWJsaWMg
SVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyCiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBjcmVhdGVJbnN0YW5jZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50Pik7CisgICAgc3RhdGljIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYpOwogcHJpdmF0ZToKLSAgICBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihQYXNzUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2xpZW50Pik7CisgICAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIo
UmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmKTsKICAgICB+V2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKTsKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAppbmRleCBhYTM5ZDU3ZTE0MmMxZTFjMDU1NTRkMmViYzQzYTIyNWI2
N2ZlMDRiLi4wMDEyMGY4Yzg5NDNhMTE4NjQxZGI1ZTQ4ZGEzOGY0NTM3Y2MwOWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcApAQCAtNjczNCw3ICs2NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpnbG9i
YWxIaXN0b3J5SXRlbShfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0b3J5SXRlbSoqIGl0ZW0pCiAg
ICAgICAgIHJldHVybiBTX09LOwogICAgIH0KIAotICAgICppdGVtID0gV2ViSGlzdG9yeUl0ZW06
OmNyZWF0ZUluc3RhbmNlKG1fZ2xvYmFsSGlzdG9yeUl0ZW0pOworICAgICppdGVtID0gV2ViSGlz
dG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKG1fZ2xvYmFsSGlzdG9yeUl0ZW0uY29weVJlZigpKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNzUyNiw5ICs3NTI2LDkgQEAgRnVsbFNjcmVlbkNv
bnRyb2xsZXIqIFdlYlZpZXc6OmZ1bGxTY3JlZW5Db250cm9sbGVyKCkKICAgICByZXR1cm4gbV9m
dWxsc2NyZWVuQ29udHJvbGxlci5nZXQoKTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRGdWxsU2Ny
ZWVuRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCit2b2lkIFdlYlZpZXc6OnNl
dEZ1bGxTY3JlZW5FbGVtZW50KFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQpCiB7Ci0gICAgbV9m
dWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IFdU
Rk1vdmUoZWxlbWVudCk7CiB9CiAKIEhXTkQgV2ViVmlldzo6ZnVsbFNjcmVlbkNsaWVudFdpbmRv
dygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKaW5kZXggMWI3NDNhNWExNTdjMjNmMzE4ZDY1Mzc4ZWIx
OWE5YWM0ZTQ4ZTIxNS4uZDk4ZGFmZjU1ODMwODFiZTEyYjg1YjgzNGUwM2RmNzZiYzMzOGQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuaApAQCAtNTE5LDcgKzUxOSw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1
cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wg
d2l0aEtleWJvYXJkKSBjb25zdDsKICAgICBib29sIGlzRnVsbFNjcmVlbigpIGNvbnN0OwogICAg
IFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyKiBmdWxsU2NyZWVuQ29udHJvbGxlcigpOwot
ICAgIHZvaWQgc2V0RnVsbFNjcmVlbkVsZW1lbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50
Pik7CisgICAgdm9pZCBzZXRGdWxsU2NyZWVuRWxlbWVudChSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4mJik7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpOyB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310018</attachid>
            <date>2017-05-13 08:39:01 -0700</date>
            <delta_ts>2017-05-13 10:33:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172067-20170513083859.patch</filename>
            <type>text/plain</type>
            <size>49005</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmYwZGM1MDhm
MTU3YTM3MzA4ZTQ0NWRkMTgwZjkzNDBmZjQ4NGExOS4uMGMxMzc5ZjkxZDBkMmQ2Mjk3NDk3NGE4
YjI5YzZjMTE1ZGY0OWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCB1
c2VzIG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0L3dpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUV2ZW50OjpET01FdmVudCk6CisgICAgICAgIChET01FdmVudDo6Y3JlYXRlSW5zdGFuY2Up
OgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoKKyAgICAgICAgKERPTVVJRXZlbnQ6OkRP
TVVJRXZlbnQpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6RE9NS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpET01Nb3VzZUV2ZW50KToKKyAgICAgICAgKERPTU11
dGF0aW9uRXZlbnQ6OkRPTU11dGF0aW9uRXZlbnQpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVu
dDo6RE9NT3ZlcmZsb3dFdmVudCk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpET01XaGVlbEV2
ZW50KToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2th
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlRnJvbUNhY2hl
KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyk6CisgICAgICAgIChXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5
QmFnLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAg
ICAgKiBXZWJBcmNoaXZlLmg6CisgICAgICAgICogV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkJhY2tG
b3J3YXJkTGlzdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNw
cDoKKyAgICAgICAgKEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VtYmVkZGVkV2lkZ2V0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVs
ZW1lbnQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBv
bGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICog
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKToKKyAgICAgICAg
KiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmg6CisgICAgICAgICogV2ViSGlzdG9yeUl0
ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKToKKyAgICAg
ICAgKFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0Rm9ybURhdGEpOgorICAgICAgICAoV2ViTXV0YWJsZVVS
TFJlcXVlc3Q6OmZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5oOgor
ICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJTY3JpcHRX
b3JsZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQpOgorICAg
ICAgICAoV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJTY3Jp
cHRXb3JsZC5oOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcik6CisgICAgICAgIChXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpzZXRGdWxsU2NyZWVuRWxlbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy5oOgorCiAyMDE3LTA1LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXggYWQ4NzY2YjMxYjU2ODNhNjlj
ZTU0NzViZjc3MDRiY2EzZGM4MzZkNC4uMDUyZDg1Y2M0MTViMzFkMDE5ZTRkYmEwNjllZjZkODBm
NWU2N2M1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgYm9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdAogdm9pZCBXZWJFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzLCBXZWJDb3JlOjpFdmVu
dCogZSkKIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGVQdHIoZSk7Ci0gICAgQ09NUHRy
PElET01FdmVudD4gZG9tRXZlbnQgPSBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2UoZVB0cik7Cisg
ICAgQ09NUHRyPElET01FdmVudD4gZG9tRXZlbnQgPSBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2Uo
V1RGTW92ZShlUHRyKSk7CiAgICAgbV9pRE9NRXZlbnRMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZG9t
RXZlbnQuZ2V0KCkpOwogfQogCkBAIC04OCwxNiArODgsMTYgQEAgUmVmPFdlYkV2ZW50TGlzdGVu
ZXI+IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciogZCkKIAogLy8g
RE9NRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ET01FdmVudDo6RE9NRXZlbnQoUGFzc1JlZlB0cjxXZWJD
b3JlOjpFdmVudD4gZSkKK0RPTUV2ZW50OjpET01FdmVudChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+
JiYgZSkKIHsKLSAgICBtX2V2ZW50ID0gZTsKKyAgICBtX2V2ZW50ID0gV1RGTW92ZShlKTsKIH0K
IAogRE9NRXZlbnQ6On5ET01FdmVudCgpCiB7CiB9CiAKLUlET01FdmVudCogRE9NRXZlbnQ6OmNy
ZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpCitJRE9NRXZlbnQqIERP
TUV2ZW50OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKIHsKICAg
ICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA3LDM2ICsxMDcsMzYgQEAg
SURPTUV2ZW50KiBET01FdmVudDo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpF
dmVudD4gZSkKIAogICAgIHN3aXRjaCAoZS0+ZXZlbnRJbnRlcmZhY2UoKSkgewogICAgIGNhc2Ug
V2ViQ29yZTo6S2V5Ym9hcmRFdmVudEludGVyZmFjZVR5cGU6IHsKLSAgICAgICAgRE9NS2V5Ym9h
cmRFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NS2V5Ym9hcmRFdmVudChlKTsKKyAgICAgICAgRE9N
S2V5Ym9hcmRFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NS2V5Ym9hcmRFdmVudChXVEZNb3ZlKGUp
KTsKICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01LZXlib2Fy
ZEV2ZW50LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRJbnRlcmZhY2VUeXBlOiB7Ci0gICAgICAgIERPTU1vdXNl
RXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU1vdXNlRXZlbnQoZSk7CisgICAgICAgIERPTU1vdXNl
RXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTU1vdXNlRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAg
IGhyID0gbmV3RXZlbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NTW91c2VFdmVudCwgKHZvaWQq
KikmZG9tRXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJDb3JlOjpN
dXRhdGlvbkV2ZW50SW50ZXJmYWNlVHlwZTogewotICAgICAgICBET01NdXRhdGlvbkV2ZW50KiBu
ZXdFdmVudCA9IG5ldyBET01NdXRhdGlvbkV2ZW50KGUpOworICAgICAgICBET01NdXRhdGlvbkV2
ZW50KiBuZXdFdmVudCA9IG5ldyBET01NdXRhdGlvbkV2ZW50KFdURk1vdmUoZSkpOwogICAgICAg
ICBociA9IG5ld0V2ZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTU11dGF0aW9uRXZlbnQsICh2
b2lkKiopJmRvbUV2ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViQ29y
ZTo6T3ZlcmZsb3dFdmVudEludGVyZmFjZVR5cGU6IHsKLSAgICAgICAgRE9NT3ZlcmZsb3dFdmVu
dCogbmV3RXZlbnQgPSBuZXcgRE9NT3ZlcmZsb3dFdmVudChlKTsKKyAgICAgICAgRE9NT3ZlcmZs
b3dFdmVudCogbmV3RXZlbnQgPSBuZXcgRE9NT3ZlcmZsb3dFdmVudChXVEZNb3ZlKGUpKTsKICAg
ICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01PdmVyZmxvd0V2ZW50
LCAodm9pZCoqKSZkb21FdmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdl
YkNvcmU6OldoZWVsRXZlbnRJbnRlcmZhY2VUeXBlOiB7Ci0gICAgICAgIERPTVdoZWVsRXZlbnQq
IG5ld0V2ZW50ID0gbmV3IERPTVdoZWVsRXZlbnQoZSk7CisgICAgICAgIERPTVdoZWVsRXZlbnQq
IG5ld0V2ZW50ID0gbmV3IERPTVdoZWVsRXZlbnQoV1RGTW92ZShlKSk7CiAgICAgICAgIGhyID0g
bmV3RXZlbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NV2hlZWxFdmVudCwgKHZvaWQqKikmZG9t
RXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYg
KGUtPmlzVUlFdmVudCgpKSB7Ci0gICAgICAgICAgICBET01VSUV2ZW50KiBuZXdFdmVudCA9IG5l
dyBET01VSUV2ZW50KGUpOworICAgICAgICAgICAgRE9NVUlFdmVudCogbmV3RXZlbnQgPSBuZXcg
RE9NVUlFdmVudChXVEZNb3ZlKGUpKTsKICAgICAgICAgICAgIGhyID0gbmV3RXZlbnQtPlF1ZXJ5
SW50ZXJmYWNlKElJRF9JRE9NVUlFdmVudCwgKHZvaWQqKikmZG9tRXZlbnQpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgRE9NRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTUV2ZW50KGUp
OworICAgICAgICAgICAgRE9NRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTUV2ZW50KFdURk1vdmUo
ZSkpOwogICAgICAgICAgICAgaHIgPSBuZXdFdmVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01F
dmVudCwgKHZvaWQqKikmZG9tRXZlbnQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktpdC93aW4v
RE9NRXZlbnRzQ2xhc3Nlcy5oCmluZGV4IDdkZjgxM2I4MDMwNzQxMGNkZmE1Yzg3YjVmYmI0NjUw
NzVhNDkxMDMuLjNiNTNiNWViM2Y2YjNlMDUzYjA1NzI0MzJlMTkwZjJkM2E3MDc3MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5lci5oPgog
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IC8vIHtBQzNEMUJDMy00OTc2LTQ0MzEtOEExOS00ODEyQzVFRkUzOUN9CkBAIC0xMDksOSArMTA4
LDkgQEAgcHVibGljOgogY2xhc3MgRE9NRXZlbnQgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMg
SURPTUV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIElET01FdmVudCogY3JlYXRlSW5zdGFu
Y2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSk7CisgICAgc3RhdGljIElET01FdmVudCog
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiYmKTsKIHByb3RlY3RlZDoKLSAg
ICBET01FdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKTsKKyAgICBET01FdmVudChS
ZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYpOwogICAgIH5ET01FdmVudCgpOwogCiBwdWJsaWM6CkBA
IC0xODMsNyArMTgyLDkgQEAgcHJvdGVjdGVkOgogY2xhc3MgRE9NVUlFdmVudCA6IHB1YmxpYyBE
T01FdmVudCwgcHVibGljIElET01VSUV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgRE9NVUlFdmVudChQ
YXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKSA6IERPTUV2ZW50KGUpIHt9CisgICAgRE9NVUlF
dmVudChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01FdmVudChXVEZN
b3ZlKGUpKQorICAgIHsgfQogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtMjk4LDcgKzI5OSw5IEBAIHB1YmxpYzoKIGNs
YXNzIERPTUtleWJvYXJkRXZlbnQgOiBwdWJsaWMgRE9NVUlFdmVudCwgcHVibGljIElET01LZXli
b2FyZEV2ZW50CiB7CiBwdWJsaWM6Ci0gICAgRE9NS2V5Ym9hcmRFdmVudChQYXNzUmVmUHRyPFdl
YkNvcmU6OkV2ZW50PiBlKSA6IERPTVVJRXZlbnQoZSkgeyB9CisgICAgRE9NS2V5Ym9hcmRFdmVu
dChSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01VSUV2ZW50KFdURk1v
dmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC00NjQsNyArNDY3LDkgQEAgcHVibGljOgogY2xh
c3MgRE9NTW91c2VFdmVudCA6IHB1YmxpYyBET01VSUV2ZW50LCBwdWJsaWMgSURPTU1vdXNlRXZl
bnQKIHsKIHB1YmxpYzoKLSAgICBET01Nb3VzZUV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZl
bnQ+IGUpIDogRE9NVUlFdmVudChlKSB7IH0KKyAgICBET01Nb3VzZUV2ZW50KFJlZlB0cjxXZWJD
b3JlOjpFdmVudD4mJiBlKQorICAgICAgICA6IERPTVVJRXZlbnQoV1RGTW92ZShlKSkKKyAgICB7
IH0KIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKQEAgLTYzOSw3ICs2NDQsOSBAQCBwdWJsaWM6CiBjbGFzcyBET01NdXRhdGlv
bkV2ZW50IDogcHVibGljIERPTUV2ZW50LCBwdWJsaWMgSURPTU11dGF0aW9uRXZlbnQKIHsKIHB1
YmxpYzoKLSAgICBET01NdXRhdGlvbkV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUp
IDogRE9NRXZlbnQoZSkgeyB9CisgICAgRE9NTXV0YXRpb25FdmVudChSZWZQdHI8V2ViQ29yZTo6
RXZlbnQ+JiYgZSkKKyAgICAgICAgOiBET01FdmVudChXVEZNb3ZlKGUpKQorICAgIHsgfQogCiAg
ICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOwpAQCAtNzUyLDcgKzc1OSw5IEBAIHB1YmxpYzoKIGNsYXNzIERPTU92ZXJmbG93RXZlbnQg
OiBwdWJsaWMgRE9NRXZlbnQsIHB1YmxpYyBJRE9NT3ZlcmZsb3dFdmVudAogewogcHVibGljOgot
ICAgIERPTU92ZXJmbG93RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBET01F
dmVudChlKSB7IH0KKyAgICBET01PdmVyZmxvd0V2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4m
JiBlKQorICAgICAgICA6IERPTUV2ZW50KFdURk1vdmUoZSkpCisgICAgeyB9CiAKICAgICAvLyBJ
VW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBA
IC04NjAsNyArODY5LDkgQEAgcHVibGljOgogY2xhc3MgRE9NV2hlZWxFdmVudCA6IHB1YmxpYyBE
T01VSUV2ZW50LCBwdWJsaWMgSURPTVdoZWVsRXZlbnQKIHsKIHB1YmxpYzoKLSAgICBET01XaGVl
bEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpIDogRE9NVUlFdmVudChlKSB7IH0K
KyAgICBET01XaGVlbEV2ZW50KFJlZlB0cjxXZWJDb3JlOjpFdmVudD4mJiBlKQorICAgICAgICA6
IERPTVVJRXZlbnQoV1RGTW92ZShlKSkKKyAgICB7IH0KIAogICAgIC8vIElVbmtub3duCiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDJjMjA1MWRjZmU5ZTMwN2E3NGNiODhiNjlmYmVmMjhmOGFlODc2
Y2MuLjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsOCArMzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQotICAgIDogbV9idWZmZXIoYnVm
ZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOwpAQCAtNDQs
OSArNDQsOSBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZW1vcnlT
dHJlYW0oYnVmZmVyKTsKKyAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMjgsNyArMjI4LDcgQEAgSFJF
U1VMVCBNZW1vcnlTdHJlYW06OlN0YXQoX091dF8gU1RBVFNURyogcHN0YXRzdGcsIERXT1JEIC8q
Z3JmU3RhdEZsYWcqLykKIAogSFJFU1VMVCBNZW1vcnlTdHJlYW06OkNsb25lKF9DT01fT3V0cHRy
XyBJU3RyZWFtKiogcHBzdG0pCiB7Ci0gICAgTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSht
X2J1ZmZlcikuY29weVJlZlRvKHBwc3RtKTsKKyAgICBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKG1fYnVmZmVyLmNvcHlSZWYoKSkuY29weVJlZlRvKHBwc3RtKTsKICAgICAvLyBGSVhNRTog
TVNETiBzYXlzIHdlIHNob3VsZCBiZSByZXR1cm5pbmcgU1RHX0VfSU5TVUZGSUNJRU5UX01FTU9S
WSBpbnN0ZWFkIG9mIEVfT1VUT0ZNRU1PUlkgaGVyZS4KICAgICByZXR1cm4gKCpwcHN0bSkgPyBT
X09LIDogRV9PVVRPRk1FTU9SWTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01l
bW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggZjU1
OWM1ODA2NTUwOWViYTQzMmJhMDUwNTJjYjc5MWZlZDEyMWUzZS4uOTdmMWM5NzUwMzA4YzI2Zjlj
M2ExYTZkNDQ0ODU3M2I2OWJiOWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWVt
b3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTMw
LDE2ICszMCwxNSBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8V1RGL1JlZlB0ci5oPgogCiBjbGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgSVN0cmVh
bQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKTsKKyAgICBzdGF0
aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CiAKIHByb3RlY3RlZDoKLSAgICBNZW1vcnlTdHJlYW0oUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIHB1Ymxp
YzoKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRl
eCAxNjliMTk3MTYxNmJkNmE0NGM5MjExNTk3OWQyZjkyZmZiM2I5NTgwLi4xYTBmYmY2ZTY0YWJj
MzAzZWM3Y2U1ZmFhYmU1OWMwM2I0MTY3NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgUGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2goKQogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2th
Z2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlm
aWVkKTsKLSAgICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZSgpKSkKKyAg
ICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAg
ICAgICAgICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKQEAgLTMyNSwxNiArMzI1
LDEyIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYg
cGx1Z2lucykgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZChQYXNz
UmVmUHRyPFBsdWdpblBhY2thZ2U+IHBycFBhY2thZ2UpCitib29sIFBsdWdpbkRhdGFiYXNlOjph
ZGQoUmVmPFBsdWdpblBhY2thZ2U+JiYgcGFja2FnZSkKIHsKLSAgICBBU1NFUlRfQVJHKHBycFBh
Y2thZ2UsIHBycFBhY2thZ2UpOwotCi0gICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2Ug
PSBwcnBQYWNrYWdlOwotCi0gICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3RW50
cnkpCisgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UuY29weVJlZigpKS5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2th
Z2UtPnBhdGgoKSwgcGFja2FnZSk7CisgICAgbV9wbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5w
YXRoKCksIHBhY2thZ2UuY29weVJlZigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI5
LDkgKzUyNSw5IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZSgpCiAgICAgICAgIGlmIChtX3BsdWdpbkRpcmVjdG9yaWVzLmZpbmQocGx1Z2luRGlyZWN0
b3J5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRl
UGFja2FnZUZyb21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNj
KTsKKyAgICAgICAgYXV0byBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZy
b21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsKIAotICAg
ICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5
KSB7CisgICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UuY29w
eVJlZigpKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhU
aW1lcy5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAg
ICAgICAgICBjYWNoZWRQbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2Up
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgK
aW5kZXggZWI2YTg0MTEyNGQ2OTc3NWI2Y2NjN2JlNDNmYmMwOWRiZjA5NzcxMi4uMDEzNzA4ZWJk
NzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtOTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAKICAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnaW4gd2FzIGFj
dHVhbGx5IGFkZGVkIG9yIG5vdCAoaXQgd29uJ3QgYmUgYWRkZWQgaWYgaXQncyBhIGR1cGxpY2F0
ZSBvZiBhbiBleGlzdGluZyBwbHVnaW4pLgotICAgICAgICBib29sIGFkZChQYXNzUmVmUHRyPFBs
dWdpblBhY2thZ2U+KTsKKyAgICAgICAgYm9vbCBhZGQoUmVmPFBsdWdpblBhY2thZ2U+JiYpOwog
ICAgICAgICB2b2lkIHJlbW92ZShQbHVnaW5QYWNrYWdlKik7CiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICAgICAgICAgdm9pZCBsb2FkUGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
CmluZGV4IDUwZjFiMzMwYTNiNDNhOWRhNzg2YzE5NWEwNzljNzhiNzI0NzRmODYuLmI4NDg1NDYx
NGYzNTg0ZWVkMDgzMWFkOTY0NDc3ZjEyMWQwNmVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMTYzLDI2ICsxNjMsMjYgQEAgdm9pZCBQbHVn
aW5QYWNrYWdlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2lzRW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3Jl
YXRlUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVk
KQorUmVmUHRyPFBsdWdpblBhY2thZ2U+IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCkKIHsKICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IGFkb3B0UmVmKG5ldyBQbHVnaW5QYWNrYWdlKHBh
dGgsIGxhc3RNb2RpZmllZCkpOwogCiAgICAgaWYgKCFwYWNrYWdlLT5mZXRjaEluZm8oKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHBh
Y2thZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBwYWNrYWdlOwogfQogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLVBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4g
UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQorUmVmPFBs
dWdpblBhY2thZ2U+IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlw
dGlvbikKIHsKLSAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IGFkb3B0UmVmKG5l
dyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2RpZmllZCkpOworICAgIFJlZjxQbHVnaW5QYWNr
YWdlPiBwYWNrYWdlID0gYWRvcHRSZWYoKm5ldyBQbHVnaW5QYWNrYWdlKHBhdGgsIGxhc3RNb2Rp
ZmllZCkpOwogICAgIHBhY2thZ2UtPm1fbmFtZSA9IG5hbWU7CiAgICAgcGFja2FnZS0+bV9kZXNj
cmlwdGlvbiA9IGRlc2NyaXB0aW9uOwogICAgIHBhY2thZ2UtPmRldGVybWluZU1vZHVsZVZlcnNp
b25Gcm9tRGVzY3JpcHRpb24oKTsKICAgICBwYWNrYWdlLT5zZXRNSU1FRGVzY3JpcHRpb24obWlt
ZURlc2NyaXB0aW9uKTsKICAgICBwYWNrYWdlLT5tX2luZm9Jc0Zyb21DYWNoZSA9IHRydWU7Ci0g
ICAgcmV0dXJuIHBhY2thZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBwYWNrYWdlOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2Fn
ZS5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggZDc2
ZWFmZDU3OWJiMzYwZjc3NDJlZWE0ZGNjMTEyYThlNWM3MTVhNS4uZjEyNzcyNWQyMDM4Mjc3Y2M1
N2ZiYjkxNjhiZTIxZjEyYjA5ZTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1
Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5QYWNrYWdlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFBsdWdpblBhY2thZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5QYWNrYWdlPiB7CiAg
ICAgcHVibGljOgogICAgICAgICB+UGx1Z2luUGFja2FnZSgpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBjcmVhdGVQYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgdGltZV90JiBsYXN0TW9kaWZpZWQpOworICAgICAgICBzdGF0aWMgUmVmUHRyPFBsdWdp
blBhY2thZ2U+IGNyZWF0ZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3Qm
IGxhc3RNb2RpZmllZCk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNI
RSkKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gY3JlYXRlUGFja2Fn
ZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0
cmluZyYgbWltZURlc2NyaXB0aW9uKTsKKyAgICAgICAgc3RhdGljIFJlZjxQbHVnaW5QYWNrYWdl
PiBjcmVhdGVQYWNrYWdlRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90
JiBsYXN0TW9kaWZpZWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24pOwogI2VuZGlmCiAKICAgICAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRleCA0MmM2ZGRmODAzNzk2NDA4NDJiODEx
ODc0ZWUyODVkZjZlYmNlYTQ5Li42MDBlMWYyNGM2NzA3Y2U1Y2VlNjkxOWQxY2I5MGY1MzA3MWFl
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTU2LDkg
KzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGx1Z2luU3RyZWFtIDog
cHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luU3RyZWFtPiwgcHJpdmF0ZSBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5TdHJlYW0+IGNyZWF0ZShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNh
dGlvbiwgdm9pZCogbm90aWZ5RGF0YSwgY29uc3QgTlBQbHVnaW5GdW5jcyogZnVuY3Rpb25zLCBO
UFAgaW5zdGFuY2UsIGNvbnN0IFBsdWdpblF1aXJrU2V0JiBxdWlya3MpCisgICAgICAgIHN0YXRp
YyBSZWY8UGx1Z2luU3RyZWFtPiBjcmVhdGUoUGx1Z2luU3RyZWFtQ2xpZW50KiBjbGllbnQsIEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNlbmROb3Rp
ZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEsIGNvbnN0IE5QUGx1Z2luRnVuY3MqIGZ1bmN0aW9u
cywgTlBQIGluc3RhbmNlLCBjb25zdCBQbHVnaW5RdWlya1NldCYgcXVpcmtzKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblN0cmVhbShjbGllbnQsIGZy
YW1lLCByZXF1ZXN0LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBmdW5jdGlvbnMsIGlu
c3RhbmNlLCBxdWlya3MpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsdWdp
blN0cmVhbShjbGllbnQsIGZyYW1lLCByZXF1ZXN0LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlE
YXRhLCBmdW5jdGlvbnMsIGluc3RhbmNlLCBxdWlya3MpKTsKICAgICAgICAgfQogICAgICAgICB2
aXJ0dWFsIH5QbHVnaW5TdHJlYW0oKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggZTM0NzAyNjVmYzhiOTRkOGMyNTA1ZmNkNzRhM2Y0
ZTRlZTk0Y2I2MC4uNzIxZDFjZDUyZDI2YjljM2ZiZTJhNzk5YThkZDNhM2U2N2UzMTY2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtMzksMTAgKzM5
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJBY3Rpb25Qcm9wZXJ0eUJh
ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2Vi
QWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0sIFBhc3NSZWZQ
dHI8RnJhbWU+IGZyYW1lKQorV2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5
QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2FjdGlvbihhY3Rpb24p
Ci0gICAgLCBtX2Zvcm0oZm9ybSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2Zvcm0o
V1RGTW92ZShmb3JtKSkKKyAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5
QmFnIik7CkBAIC01NCw5ICs1NCw5IEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9u
UHJvcGVydHlCYWcoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJv
cGVydHlCYWciKTsKIH0KIAotV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5
QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtLCBQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK1dl
YkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYm
IGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKIHsKLSAgICBXZWJBY3Rpb25Qcm9wZXJ0eUJh
ZyogaW5zdGFuY2UgPSBuZXcgV2ViQWN0aW9uUHJvcGVydHlCYWcoYWN0aW9uLCBmb3JtLCBmcmFt
ZSk7IAorICAgIFdlYkFjdGlvblByb3BlcnR5QmFnKiBpbnN0YW5jZSA9IG5ldyBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZyhhY3Rpb24sIFdURk1vdmUoZm9ybSksIFdURk1vdmUoZnJhbWUpKTsKICAgICBp
bnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmgKaW5kZXggMzc1NzE1MWI5ODEwNTliYWQ4NTc4YmFm
N2NiNjUwMzkyZmQ5Y2Q5MC4uMGY5ZjAxNTIyNmRjYWVkM2YyNzdkNDljN2U4NzQ2NDNhNTVmOWZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5oCkBAIC0zMywxMCAr
MzMsMTAgQEAKIAogY2xhc3MgV2ViQWN0aW9uUHJvcGVydHlCYWcgOiBwdWJsaWMgSVByb3BlcnR5
QmFnIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQWN0aW9uUHJvcGVydHlCYWcqIGNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBz
dGF0aWMgV2ViQWN0aW9uUHJvcGVydHlCYWcqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYmLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYkFjdGlvblByb3Bl
cnR5QmFnKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudD4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVm
UHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mJiwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYm
KTsKICAgICB+V2ViQWN0aW9uUHJvcGVydHlCYWcoKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCBhZDBjOTg2ZTg4ZDA3ZWQ2ZmJkYzkxMzM1ZmZlY2IwYWVlZTMzYzQx
Li4xODYzNzQ4N2JmOGEwNDc5NmFmZjJhNGE4YjY4OTU2MjI0Y2E1MDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJBcmNoaXZlLmNwcApAQCAtNDEsMTYgKzQxLDE2IEBAIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6
OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmUq
IFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y29yZUFyY2hpdmUpCitXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKIHsKLSAgICBXZWJBcmNoaXZlKiBp
bnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKGNvcmVBcmNoaXZlKTsKKyAgICBXZWJBcmNoaXZlKiBp
bnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKFdURk1vdmUoY29yZUFyY2hpdmUpKTsKIAogICAgIGlu
c3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVdlYkFyY2hpdmU6
OldlYkFyY2hpdmUoUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkKLSAg
ICA6IG1fYXJjaGl2ZShjb3JlQXJjaGl2ZSkKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+JiYgY29yZUFyY2hpdmUpCisgICAgOiBtX2FyY2hpdmUoV1RGTW92
ZShjb3JlQXJjaGl2ZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBIUkVTVUxUIFdlYkFy
Y2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEu
Z2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENG
RGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlcikuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkFyY2hpdmUuaAppbmRleCA1Y2U2MGQ4YjBlMjYxNTJiMDE1ZDYw
MDNjMzk2YjYzOGYzZjlhYTY2Li5lMWFjYWZmZDI4MjdhOWNjZWNkODFiODA1MzYzMmU3MGZiNDli
ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJXZWJLaXQuaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw5ICszOCw5IEBAIGNsYXNz
IFdlYkFyY2hpdmUgOiBwdWJsaWMgSVdlYkFyY2hpdmUKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
V2ViQXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViQXJjaGl2ZSogY3Jl
YXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CisgICAg
c3RhdGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJBcmNoaXZlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOworICAgIFdlYkFyY2hpdmUoUmVmUHRyPFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU+JiYpOwogICAgIH5XZWJBcmNoaXZlKCk7CiAKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDRlYTIwMGQxYmNkNWRi
MmM5Y2E2YzE5Y2U3OTkwNmI1NDkxMTdkMDYuLjVhYTczZDViYmQ5ZDI3MWNkZWJiOTdmYzc1NWUx
ODUzODgyMTMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApA
QCAtNDcsOCArNDcsOCBAQCBzdGF0aWMgSGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNr
Rm9yd2FyZExpc3QqPiYgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKQogICAgIHJldHVybiBzdGF0
aWNCYWNrRm9yd2FyZExpc3RXcmFwcGVyczsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJC
YWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkTGlz
dCkKLSAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGJhY2tGb3J3YXJkTGlzdCkKK1dlYkJhY2tGb3J3
YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFj
a0ZvcndhcmRMaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QoV1RGTW92ZShiYWNrRm9yd2Fy
ZExpc3QpKQogewogICAgIEFTU0VSVCghYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5jb250YWlu
cyhtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSkpOwogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJz
KCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsKQEAgLTY4LDEyICs2OCwxMiBA
QCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CiB9CiAKLVdlYkJhY2tGb3J3
YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJh
Y2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0KQorV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdCogaW5zdGFuY2UgPSBi
YWNrRm9yd2FyZExpc3RXcmFwcGVycygpLmdldChiYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAg
ICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgaW5zdGFuY2UgPSBuZXcgV2ViQmFja0ZvcndhcmRM
aXN0KGJhY2tGb3J3YXJkTGlzdCk7CisgICAgICAgIGluc3RhbmNlID0gbmV3IFdlYkJhY2tGb3J3
YXJkTGlzdChXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdCkpOwogCiAgICAgaW5zdGFuY2UtPkFkZFJl
ZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRM
aXN0LmgKaW5kZXggOWRlNjhiMzlkZjBmYjZlMTI1M2Q5OGFmODQxNWQ4NmNkYzZmMDMyYy4uYmZh
MjUxNjc0OWZkYTQ4ZmRhNWIxMjM4YjE5ZDY0MTQzOWI2ZDAyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIldlYkhp
c3RvcnlJdGVtLmgiCiAKLSNpbmNsdWRlIDxXVEYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPFdU
Ri9SZWZQdHIuaD4KIAogY2xhc3MgQmFja0ZvcndhcmRMaXN0OwpAQCAtMzcsOSArMzYsOSBAQCBj
bGFzcyBCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMg
SVdlYkJhY2tGb3J3YXJkTGlzdCwgSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVm
UHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAgIHN0YXRpYyBXZWJCYWNrRm9yd2FyZExpc3QqIGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYpOwogcHJvdGVjdGVkOgotICAg
IFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4pOworICAgIFdl
YkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmKTsKICAgICB+V2ViQmFj
a0ZvcndhcmRMaXN0KCk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAppbmRleCAxNDcyM2ZkOWFmM2E0NjIzOWVi
ODAzZDM1MzBiYWRmZDAzYmNiMmRhLi41YTZmMTEyMDNjYmU5N2RjMzZhMTNjNGY2ODJiNzM4MDlk
OWVhNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1i
ZWRkZWRXaWRnZXQuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVBhc3NSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IEVtYmVkZGVkV2lkZ2V0OjpjcmVh
dGUoSVdlYkVtYmVkZGVkVmlldyogdmlldywgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIEhX
TkQgcGFyZW50V2luZG93LCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmPEVtYmVkZGVkV2lkZ2V0
PiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKElXZWJFbWJlZGRlZFZpZXcqIHZpZXcsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBIV05EIHBhcmVudFdpbmRvdywgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKLSAgICBSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IHdpZGdldCA9IGFkb3B0UmVmKG5ldyBF
bWJlZGRlZFdpZGdldCh2aWV3LCBlbGVtZW50KSk7CisgICAgYXV0byB3aWRnZXQgPSBhZG9wdFJl
ZigqbmV3IEVtYmVkZGVkV2lkZ2V0KHZpZXcsIGVsZW1lbnQpKTsKIAogICAgIHdpZGdldC0+Y3Jl
YXRlV2luZG93KHBhcmVudFdpbmRvdywgc2l6ZSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogRW1iZWRkZWRXaWRnZXQ6On5FbWJlZGRlZFdp
ZGdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRX
aWRnZXQuaAppbmRleCBmNjQ3YjNlMWNjOTc3MjM1NGM4NTY3MDc1ZDJiNjc1MTBjZjg5M2I3Li4y
NTI3OTgyY2VjM2RiZDVmNTcwZTJmNWJiMjc4YTQxYzhiMjhlZmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmgKQEAgLTQwLDcgKzQw
LDcgQEAgaW50ZXJmYWNlIElXZWJFbWJlZGRlZFZpZXc7CiAKIGNsYXNzIEVtYmVkZGVkV2lkZ2V0
IDogcHVibGljIFdlYkNvcmU6OldpZGdldCwgcHVibGljIFdlYkNvcmU6OlBsdWdpbk1hbnVhbExv
YWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW1iZWRkZWRXaWRnZXQ+IGNy
ZWF0ZShJV2ViRW1iZWRkZWRWaWV3KiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBIV05E
IHBhcmVudFdpbmRvdywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHN0YXRpYyBSZWY8
RW1iZWRkZWRXaWRnZXQ+IGNyZWF0ZShJV2ViRW1iZWRkZWRWaWV3KiwgV2ViQ29yZTo6SFRNTFBs
dWdJbkVsZW1lbnQqLCBIV05EIHBhcmVudFdpbmRvdywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OwogICAgIH5FbWJlZGRlZFdpZGdldCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4MDliOGE3OWMz
NGU3YmFkYTVhNWRjZDI1ZGI5MzI2MjFlYTQ5YWMxLi44NjY3ODdjMDcwZjRiZTgzODU3MGEwZmQ3
ZGZlNmJkNjEyMWQ4M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRm9jdXNEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogY2xhc3MgV2ViVmlldzsKIGNsYXNzIFdlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYmExNDM1MTk2
NTkyNjZhNjUwNzVjZjQ5MGE1NDFmZDQyZDU4MTllZS4uYmM5MGM5NGZkMjY5M2MzZGIyMGM0MGIw
NjgzZGUyMzdiZTYxZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNTY1LDcgKzU2NSw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0
KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3Zv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJT
VFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5
c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01ODIsNyArNTgy
LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUsIEIKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KGJhc2VDb3JlVVJMKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBt
aW1lVHlwZVN0cmluZywgZGF0YS0+c2l6ZSgpLCBlbmNvZGluZ1N0cmluZyk7Ci0gICAgU3Vic3Rp
dHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoZGF0YSwgZmFpbGluZ0NvcmVVUkwsIHJlc3BvbnNlLCBT
dWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOworICAgIFN1
YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdURk1vdmUoZGF0YSksIGZhaWxpbmdDb3JlVVJM
LCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuKTsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gSVdlYkZyYW1l
IG1ldGhvZHMsIHNvIGRvbid0IEFTU0VSVCB0aGF0IHRoZSBGcmFtZSBwb2ludGVyIGlzbid0IG51
bGwuCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpKQpAQCAtNTkxLDcgKzU5
MSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCCiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAKICAgICBTVEFUU1RHIHN0YXQ7
CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkg
ewpAQCAtNjA1LDcgKzYwNSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIsIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTEwMzEsNyArMTAzMSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmRlc2Vs
ZWN0QWxsKCkKIAogLy8gV2ViRnJhbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQoSVdlYlZpZXcqIHdlYlZpZXcsIFBh
Z2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQorUmVmPEZyYW1l
PiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiB3ZWJW
aWV3LCBQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsK
ICAgICB3ZWJWaWV3LT5RdWVyeUludGVyZmFjZSgmZC0+d2ViVmlldyk7CiAgICAgZC0+d2ViVmll
dy0+UmVsZWFzZSgpOyAvLyBkb24ndCBob2xkIHRoZSBleHRyYSByZWYKQEAgLTEwNDAsOSArMTA0
MCw5IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZVdpdGhPd25l
ckVsZW1lbnQoSVdlYlZpZXcqIHdlYlZpZXcsIFBhCiAgICAgZC0+d2ViVmlldy0+dmlld1dpbmRv
dygmdmlld1dpbmRvdyk7CiAKICAgICB0aGlzLT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlz
IHJlZiBpbiBmcmFtZUxvYWRlckRlc3Ryb3llZCgpCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9
IEZyYW1lOjpjcmVhdGUocGFnZSwgb3duZXJFbGVtZW50LCBuZXcgV2ViRnJhbWVMb2FkZXJDbGll
bnQodGhpcykpOwotICAgIGQtPmZyYW1lID0gZnJhbWUuZ2V0KCk7Ci0gICAgcmV0dXJuIGZyYW1l
LnJlbGVhc2UoKTsKKyAgICBhdXRvIGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCBvd25lckVs
ZW1lbnQsIG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudCh0aGlzKSk7CisgICAgZC0+ZnJhbWUgPSBm
cmFtZS5wdHIoKTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmluaXRX
aXRoV2ViVmlldyhJV2ViVmlldyogd2ViVmlldywgUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5o
CmluZGV4IGE0ZDkxOTFmZWU0ZTQxYWFhMzQ3NWNhYWI1M2ZiNjkyYTk0YTc0ZTQuLmRiZWE2OThh
NTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAt
MTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0
cm95ZWQoKTsKIAogICAgIC8vIFdlYkZyYW1lCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiwgV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOworICAgIFJlZjxXZWJDb3JlOjpG
cmFtZT4gY3JlYXRlU3ViZnJhbWVXaXRoT3duZXJFbGVtZW50KElXZWJWaWV3KiwgV2ViQ29yZTo6
UGFnZSosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOwogICAgIHZvaWQgaW5pdFdp
dGhXZWJWaWV3KElXZWJWaWV3KiwgV2ViQ29yZTo6UGFnZSopOwogICAgIFdlYkNvcmU6OkZyYW1l
KiBpbXBsKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0xOTksNyArMTk5LDcgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3Ry
aW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2
b2lkIGxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgQlNUUiBtaW1l
VHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VS
TCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQ
YWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGlu
ZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNv
cmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwCmluZGV4IGYwODViMjgxZTc4Yzk3ZTQ0NjY5ODNhYzMxYzMyZDIxZjE0YzYxMDUu
LjJkNmY2OWVhNDVjNGNjMjY3NjM2MDQ0NTgxZTAzNGE3MzA1NDc3MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zNSw4ICszNSw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihQYXNz
UmVmUHRyPEZyYW1lPiBmcmFtZSkKLSAgICA6IG1fZnJhbWUoZnJhbWUpCitXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkK
KyAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKQEAgLTQ4
LDkgKzQ4LDkgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVu
ZXIoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ciIpOwogfQogCi1XZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVy
OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK1dlYkZyYW1lUG9saWN5
TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxG
cmFtZT4mJiBmcmFtZSkKIHsKLSAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBpbnN0YW5jZSA9
IG5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKGZyYW1lKTsKKyAgICBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyKiBpbnN0YW5jZSA9IG5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnJh
bWUpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oCmluZGV4IGQzZjY3Zjkw
MGZlZjUwNzliMjhlODIyZmQ2NDZjM2NjM2Y5NzA5OTIuLjAyYmM0Y2FhYjY1OWUyOTk4NjY4Y2Q4
MTIzNDM4NjM2OTE2YmYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cl9oCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgpAQCAtMzgsOSArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXIgOiBwdWJsaWMgSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIs
IHB1YmxpYyBJV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnJhbWU+KTsKKyAgICBzdGF0aWMgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+KTsKKyAgICBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4mJik7CiAgICAgfldlYkZyYW1l
UG9saWN5TGlzdGVuZXIoKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCA4MDZlZGY2ZTM4MjI3MWZhYjVh
OWFmMTcyODMyYTZlM2U5Y2ExMzZkLi45Nzc1NWE5ZjZlMTI4ZGI3NzkwZTliMGIxMTIzMWRkODZj
Mzc2ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiAvLyBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ09NUHRyPFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6
OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGdlb2xvY2F0aW9uKQorQ09N
UHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxHZW9sb2NhdGlvbj4mJiBnZW9sb2NhdGlvbikK
IHsKLSAgICByZXR1cm4gbmV3IFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoZ2VvbG9jYXRp
b24pOworICAgIHJldHVybiBuZXcgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSk7CiB9CiAKLVdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbj4gZ2VvbG9jYXRp
b24pCitXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJiBnZW9sb2NhdGlvbikKICAgICA6IG1fcmVmQ291
bnQoMCkKLSAgICAsIG1fZ2VvbG9jYXRpb24oZ2VvbG9jYXRpb24pCisgICAgLCBtX2dlb2xvY2F0
aW9uKFdURk1vdmUoZ2VvbG9jYXRpb24pKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmgKaW5kZXgg
ZmNlNWI1NTMzNTAzNDJkODEwMjIzZjAwZWIyNmEwZjBlMDllM2M4MC4uMDdmOWFmZTNhZjYzNzY3
YTQ2ODExMWUzYWUwYWU4ZGU3YmMwYmU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzcsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBwdWJsaWMgSVdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lcj4gY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4p
OworICAgIHN0YXRpYyBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4gY3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uPiYmKTsKIAogICAgIC8vIElVbmtu
b3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTQ5
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkZW55KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihQ
YXNzUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uPik7CisgICAgV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcihSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb24+JiYpOwogICAgIH5XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKCk7CiAKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNiZTc4MWU4ZDg5ZDk4Y2I2ODUx
YjA1YmFmNGU4MzNjMjBmNzIwYzIuLjg0Mzc2MjAxZDA3ZWIzZmVmNWViMmQ5YTcyMTc2ZDMxN2Y5
OTEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTQ2LDggKzQ2LDgg
QEAgc3RhdGljIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+JiBoaXN0b3J5
SXRlbVdyYXBwZXJzKCkKICAgICByZXR1cm4gc3RhdGljSGlzdG9yeUl0ZW1XcmFwcGVyczsKIH0K
IAotV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+
IGhpc3RvcnlJdGVtKQotICAgIDogbV9oaXN0b3J5SXRlbShoaXN0b3J5SXRlbSkKK1dlYkhpc3Rv
cnlJdGVtOjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0p
CisgICAgOiBtX2hpc3RvcnlJdGVtKFdURk1vdmUoaGlzdG9yeUl0ZW0pKQogewogICAgIEFTU0VS
VCghaGlzdG9yeUl0ZW1XcmFwcGVycygpLmNvbnRhaW5zKG1faGlzdG9yeUl0ZW0uZ2V0KCkpKTsK
ICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMp
OwpAQCAtNzIsMTQgKzcyLDE0IEBAIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3Jl
YXRlSW5zdGFuY2UoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotV2ViSGlzdG9yeUl0ZW0q
IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBo
aXN0b3J5SXRlbSkKK1dlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJdGVtKQogewogICAgIFdlYkhpc3RvcnlJ
dGVtKiBpbnN0YW5jZTsKIAogICAgIGluc3RhbmNlID0gaGlzdG9yeUl0ZW1XcmFwcGVycygpLmdl
dChoaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICBpbnN0
YW5jZSA9IG5ldyBXZWJIaXN0b3J5SXRlbShoaXN0b3J5SXRlbSk7CisgICAgICAgIGluc3RhbmNl
ID0gbmV3IFdlYkhpc3RvcnlJdGVtKFdURk1vdmUoaGlzdG9yeUl0ZW0pKTsKIAogICAgIGluc3Rh
bmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9y
eUl0ZW0uaAppbmRleCAyMGRmOWFjYjYwYmExZGU2ZTRlNWRiYWE5NzI1NDJmMzYyOThjZTliLi5i
Mzg2NTcwM2VkY2MxYTljYTdmM2RmZmQ2YWUzMTgzZDYyZDEzMDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnlJdGVtLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKIAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQyLDkgQEAgY2xhc3MgV2ViSGlzdG9yeUl0ZW0g
OiBwdWJsaWMgSVdlYkhpc3RvcnlJdGVtLCBJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlCiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYkhpc3RvcnlJdGVtKiBjcmVhdGVJbnN0YW5jZSgpOwotICAgIHN0
YXRpYyBXZWJIaXN0b3J5SXRlbSogY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4pOworICAgIHN0YXRpYyBXZWJIaXN0b3J5SXRlbSogY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJIaXN0
b3J5SXRlbShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPik7CisgICAgV2ViSGlzdG9y
eUl0ZW0oUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKTsKICAgICB+V2ViSGlzdG9yeUl0
ZW0oKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJs
ZVVSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCmluZGV4IGQ1ZDYyYWZkNWZlNThlZTE3OTYyYjg1MmU5MGYxYTcwOTU3ODI1YzMuLjNmMzZm
MmVjN2IzZDUxYTc0NGIwYzlhMzQ3OTA4ZDdjY2EyYzQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTM5NCwxMiArMzk0LDEyIEBAIEhSRVNVTFQg
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KF9DT01fT3V0cHRyX29wdF8gSVdlYk11
dGFibGVVUkxSZXF1ZXN0CiAKIC8vIElXZWJNdXRhYmxlVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OnNldEZvcm1EYXRhKGNvbnN0IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRhdGEp
Cit2b2lkIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRGb3JtRGF0YShSZWZQdHI8Rm9ybURhdGE+
JiYgZGF0YSkKIHsKLSAgICBtX3JlcXVlc3Quc2V0SFRUUEJvZHkoZGF0YSk7CisgICAgbV9yZXF1
ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZGF0YSkpOwogfQogCi1jb25zdCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Zm9ybURhdGEoKSBjb25zdAorY29uc3QgUmVm
UHRyPEZvcm1EYXRhPiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Zm9ybURhdGEoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3JlcXVlc3QuaHR0cEJvZHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5oCmluZGV4IDc3NTBhZGIyMTM3OGRmMTU1YzRkZmQ4Y2E3ZGE2ODUx
YzQ1NTgwYTYuLjA0MWM5MDkyMTg0YmM0YzY1YzdmYjEzM2UxMDYxN2ZiODk4MmIzODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuaApAQCAtOTksOCArOTksOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIENGVVJMUmVxdWVzdFJlZiBTVERNRVRI
T0RDQUxMVFlQRSBjZlJlcXVlc3QoKTsKIAogICAgIC8vIFdlYk11dGFibGVVUkxSZXF1ZXN0Ci0g
ICAgdm9pZCBzZXRGb3JtRGF0YShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPiBk
YXRhKTsKLSAgICBjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPiBmb3JtRGF0YSgp
IGNvbnN0OworICAgIHZvaWQgc2V0Rm9ybURhdGEoUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPiYm
KTsKKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IGZvcm1EYXRhKCkgY29uc3Q7
CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxk
cygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOWQ3NWYyZjViMWM0
NWQ4MTAzOGYzMzgwMWYwMGYxNGZiNjk3NmEyOC4uYjI5MmRkZTdkY2NlZjYyZmNhNzNiMGM0Y2I0
YmFiMmFkYzViZmZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsOSArNTEs
OSBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIENP
TVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoZGF0YSk7CisgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIAogICAgIFdlYlJlc291
cmNlKiBpbnN0YW5jZSA9IG5ldyBXZWJSZXNvdXJjZShtZW1vcnlTdHJlYW0uZ2V0KCksIHJlc3Bv
bnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1l
KCksIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3Vy
Y2UuaAppbmRleCAzNGY2MzJkOWZiZjI5ODRjZWRiZTg3YjUwMmE4Y2I2NTBmMGNhMTlmLi5iOGM3
ZGNjYjAzNzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291
cmNlLmgKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgV2ViUmVz
b3VyY2UgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CisgICAgc3Rh
dGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBwcm90ZWN0ZWQ6CiAg
ICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIH5XZWJSZXNvdXJjZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCmluZGV4IDMyOWIyNmQzZTVlZmE0ODdl
NzhhYTgwZGQ0YzYyNjU0NWRjOGJiMjUuLmQ1YWI0YWU3ZDdiYjZlNWM3YTY5ODE0NjJmMDcxMjZl
NzMwYTJjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTM4LDggKzM4
LDggQEAgc3RhdGljIFdvcmxkTWFwJiBhbGxXb3JsZHMoKQogICAgIHJldHVybiBtYXA7CiB9CiAK
LWlubGluZSBXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUGFzc1JlZlB0cjxET01XcmFw
cGVyV29ybGQ+IHdvcmxkKQotICAgIDogbV93b3JsZCh3b3JsZCkKK2lubGluZSBXZWJTY3JpcHRX
b3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3b3JsZCkKKyAg
ICA6IG1fd29ybGQoV1RGTW92ZSh3b3JsZCkpCiB7CiAgICAgQVNTRVJUX0FSRyh3b3JsZCwgbV93
b3JsZCk7CiAKQEAgLTcwLDkgKzcwLDkgQEAgQ09NUHRyPFdlYlNjcmlwdFdvcmxkPiBXZWJTY3Jp
cHRXb3JsZDo6Y3JlYXRlSW5zdGFuY2UoKQogICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpKTsKIH0KIAotQ09NUHRyPFdlYlNjcmlwdFdvcmxk
PiBXZWJTY3JpcHRXb3JsZDo6Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxET01XcmFwcGVyV29y
bGQ+IHdvcmxkKQorQ09NUHRyPFdlYlNjcmlwdFdvcmxkPiBXZWJTY3JpcHRXb3JsZDo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3b3JsZCkKIHsKLSAgICByZXR1cm4g
bmV3IFdlYlNjcmlwdFdvcmxkKHdvcmxkKTsKKyAgICByZXR1cm4gbmV3IFdlYlNjcmlwdFdvcmxk
KFdURk1vdmUod29ybGQpKTsKIH0KIAogQ09NUHRyPFdlYlNjcmlwdFdvcmxkPiBXZWJTY3JpcHRX
b3JsZDo6ZmluZE9yQ3JlYXRlV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmggYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJTY3JpcHRXb3JsZC5oCmluZGV4IDZjNWYxM2MwMDQ4ZGIyZWZiZjcxOGE1OGY2MDgyNDRh
NjRhYjIzNjQuLjljYWJhMmUwYzBmMjc4MDE3YzI3MTM3N2Y3MzIxNzY4Yzg4ZGJjZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViU2NyaXB0V29ybGQuaApAQCAtNDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuICptX3dvcmxk
OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4gY3JlYXRl
SW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+KTsKKyAgICBzdGF0
aWMgQ09NUHRyPFdlYlNjcmlwdFdvcmxkPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkPiYmKTsKIAotICAgIFdlYlNjcmlwdFdvcmxkKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkPik7CisgICAgV2ViU2NyaXB0V29ybGQoUmVmUHRyPFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZD4mJik7CiAgICAgfldlYlNjcmlwdFdvcmxkKCk7CiAKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRl
eCAyYmYwMzllMjRmYmJlMTVlZWE0N2Y5ZDI1NzAwYjFlYTI5ZGZjZGU2Li4zNWE4NDVlZDY5M2Nh
MDVkYzc2ZGU2MzU2N2JjZTZmZTlkZGNhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC0zNyw4
ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihQYXNzUmVmUHRy
PEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCitX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIoUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKKyAg
ICA6IG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwog
ICAgIGdDbGFzc0NvdW50Kys7CkBAIC01MSw5ICs1MSw5IEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKQog
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXIiKTsKIH0KIAotV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVm
UHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiBjbGllbnQpCitXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4m
JiBjbGllbnQpCiB7Ci0gICAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKGNsaWVudCk7
CisgICAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIGluc3RhbmNlID0gbmV3
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFdURk1vdmUoY2xpZW50KSk7CiAg
ICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ci5oCmluZGV4IDJiOGY2YTRlZDNmYWUwMDJlMGE1NzZiN2UxMDRkOTgxYWRhMzIyNDQuLmRiMzBi
NjU0ZWE2NjYwNzQyODBmYjNmYmFiNTA0MzgwZTQzMTJmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCI1Q0FDRDYzNy1GODJGLTQ5MUYtOTQ3
QS01RENBMzhBQTBGRUEiKSBXZWJVUkxBdXRoZW50aWNhdGlvbgogICAgIDogcHVibGljIElXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcgogewogcHVibGljOgotICAgIHN0YXRpYyBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogY3JlYXRlSW5zdGFuY2UoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4pOworICAgIHN0YXRpYyBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmKTsKIHByaXZhdGU6Ci0gICAgV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNsaWVudD4pOworICAgIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0
cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4mJik7CiAgICAgfldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKaW5kZXggYWEzOWQ1N2UxNDJjMWUxYzA1NTU0ZDJlYmM0M2EyMjViNjdmZTA0
Yi4uMDAxMjBmOGM4OTQzYTExODY0MWRiNWU0OGRhMzhmNDUzN2NjMDljZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKQEAgLTY3MzQsNyArNjczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Z2xvYmFsSGlz
dG9yeUl0ZW0oX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtKQogICAgICAg
ICByZXR1cm4gU19PSzsKICAgICB9CiAKLSAgICAqaXRlbSA9IFdlYkhpc3RvcnlJdGVtOjpjcmVh
dGVJbnN0YW5jZShtX2dsb2JhbEhpc3RvcnlJdGVtKTsKKyAgICAqaXRlbSA9IFdlYkhpc3RvcnlJ
dGVtOjpjcmVhdGVJbnN0YW5jZShtX2dsb2JhbEhpc3RvcnlJdGVtLmNvcHlSZWYoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKQEAgLTc1MjYsOSArNzUyNiw5IEBAIEZ1bGxTY3JlZW5Db250cm9s
bGVyKiBXZWJWaWV3OjpmdWxsU2NyZWVuQ29udHJvbGxlcigpCiAgICAgcmV0dXJuIG1fZnVsbHNj
cmVlbkNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKLXZvaWQgV2ViVmlldzo6c2V0RnVsbFNjcmVlbkVs
ZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQordm9pZCBXZWJWaWV3OjpzZXRGdWxs
U2NyZWVuRWxlbWVudChSZWZQdHI8RWxlbWVudD4mJiBlbGVtZW50KQogewotICAgIG1fZnVsbFNj
cmVlbkVsZW1lbnQgPSBlbGVtZW50OworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBXVEZNb3Zl
KGVsZW1lbnQpOwogfQogCiBIV05EIFdlYlZpZXc6OmZ1bGxTY3JlZW5DbGllbnRXaW5kb3coKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5oCmluZGV4IDFiNzQzYTVhMTU3YzIzZjMxOGQ2NTM3OGViMTlhOWFj
NGU0OGUyMTUuLmQ5OGRhZmY1NTgzMDgxYmUxMmI4NWI4MzRlMDNkZjc2YmMzMzhkM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmgKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0
c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqLCBib29sIHdpdGhL
ZXlib2FyZCkgY29uc3Q7CiAgICAgYm9vbCBpc0Z1bGxTY3JlZW4oKSBjb25zdDsKICAgICBXZWJD
b3JlOjpGdWxsU2NyZWVuQ29udHJvbGxlciogZnVsbFNjcmVlbkNvbnRyb2xsZXIoKTsKLSAgICB2
b2lkIHNldEZ1bGxTY3JlZW5FbGVtZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4pOwor
ICAgIHZvaWQgc2V0RnVsbFNjcmVlbkVsZW1lbnQoUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYp
OwogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGZ1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsgfQogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>