<?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>55653</bug_id>
          
          <creation_ts>2011-03-02 23:38:16 -0800</creation_ts>
          <short_desc>Moved all variable object storage inline -- upping the object size limit to 1K</short_desc>
          <delta_ts>2011-03-10 12:25:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361390</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-02 23:38:16 -0800</bug_when>
    <thetext>Moved all variable object storage inline -- upping the object size limit to 1K</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361396</commentid>
    <comment_count>1</comment_count>
      <attachid>84527</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-02 23:50:16 -0800</bug_when>
    <thetext>Created attachment 84527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361427</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-03 00:54:32 -0800</bug_when>
    <thetext>Attachment 84527 did not build on qt:
Build output: http://queues.webkit.org/results/8077984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361634</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-03 08:26:58 -0800</bug_when>
    <thetext>Attachment 84527 did not build on win:
Build output: http://queues.webkit.org/results/8084329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361736</commentid>
    <comment_count>4</comment_count>
      <attachid>84527</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 10:48:26 -0800</bug_when>
    <thetext>Comment on attachment 84527
Patch

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

Please make sure to fix the Qt and Windows builds. Both are failing on the EWS bots.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:81
&gt; +        Event* m_evt;

Can this be named m_event instead? Why abbreviate event to &quot;evt&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361889</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-03 13:24:22 -0800</bug_when>
    <thetext>Committed r80277: &lt;http://trac.webkit.org/changeset/80277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361910</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 13:57:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80277 might have broken Qt Windows 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362017</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-03 15:39:28 -0800</bug_when>
    <thetext>This commit seems to have caused many test failures on GTK+:  http://build.webkit.org/results/GTK Linux 64-bit Debug/r80284 (19987)/results.html

I also see many new failures on Intel Release (Tests): http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r80285%20(29135) Though I&apos;m not sure if they are related or not.

I have confirmed that at least some of these tests started failing right ater this commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362635</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-04 11:09:31 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/80303.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362636</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-04 11:09:52 -0800</bug_when>
    <thetext>Also caused a performance regression on Kraken: bug 55729.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365377</commentid>
    <comment_count>10</comment_count>
      <attachid>85357</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-10 11:48:20 -0800</bug_when>
    <thetext>Created attachment 85357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365419</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-10 12:25:56 -0800</bug_when>
    <thetext>Committed r80742: &lt;http://trac.webkit.org/changeset/80742&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84527</attachid>
            <date>2011-03-02 23:50:16 -0800</date>
            <delta_ts>2011-03-10 11:48:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55653-20110302235014.patch</filename>
            <type>text/plain</type>
            <size>91942</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTEtMDMtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBhbGwgdmFyaWFi
bGUgb2JqZWN0IHN0b3JhZ2UgaW5saW5lIC0tIHVwcGluZyB0aGUgb2JqZWN0IHNpemUgbGltaXQg
dG8gMUsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1
NjUzCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0
aXZhdGlvbi5oOiBSZW1vdmVkIG91dC1vZi1saW5lIHN0b3JhZ2UuIENoYW5nZWQgZC0+IHRvIG1f
LgorCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpN
YXJrZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKTogQWRkZWQgYW4gaW1wcmVjaXNlIHNpemUgY2xhc3MK
KyAgICAgICAgdG8gYWNjb21vZGF0ZSBvYmplY3RzIHVwIHRvIDFLLgorCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOiBSZW1vdmVkIG91dC1vZi1saW5lIHN0b3JhZ2UuIENoYW5nZWQgZC0+IHRvIG1fLgorCisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6IERvbid0IEFTU0VSVCB0aGF0IEpTRmluYWxP
YmplY3QgZmlsbHMgdGhlIG1heGltdW0KKyAgICAgICAgb2JqZWN0IHNpemUsIHNpbmNlIGl0IGRv
ZXNuJ3QgYW55bW9yZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0Lmg6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6IFJlbW92ZWQgb3V0LW9mLWxpbmUgc3RvcmFnZS4g
Q2hhbmdlZCBkLT4gdG8gbV8uCisKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OnJlc2V0KToKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmg6IEFk
ZGVkIGFuIGltcHJlY2lzZSBzaXplIGNsYXNzIHRvIGFjY29tb2RhdGUgb2JqZWN0cyB1cCB0byAx
Sy4KKwogMjAxMS0wMy0wMiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw2
IEBAIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEyZGVmaW5lR2V0dGVyRVAKIF9fWk4zSlNDMTRK
U0dsb2JhbE9iamVjdDEyZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVBOU184SlNPYmplY3RFagogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJtYXJrQ2hpbGRy
ZW5FUk5TXzlNYXJrU3RhY2tFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxN3B1dFdpdGhBdHRy
aWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWoKLV9f
Wk4zSlNDMTRKU0dsb2JhbE9iamVjdDI1ZGVzdHJveUpTR2xvYmFsT2JqZWN0RGF0YUVQdgogX19a
TjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFICAKIF9fWk4zSlNDMTRKU0dsb2Jh
bE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3REMkV2
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTA5LDcgKzkwOSw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWkKIAogICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29w
ZUNoYWluLT5nbG9iYWxPYmplY3QtPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmNhbGxGdW5jdGlv
bigpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0
cnVjdGlvbnMoKS5zaXplKCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTIwLDcgKzky
MCw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWkKIAogICAgIGVt
aXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25kLT5p
bmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxP
YmplY3QtPmQoKS0+YXBwbHlGdW5jdGlvbi5nZXQoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5hcHBseUZ1bmN0aW9uKCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNp
emUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbioKIHZvaWQgSklUOjpl
bWl0X29wX2dldF9nbG9iYWxfdmFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSlNWYXJpYWJsZU9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwotICAgIGxvYWRQdHIoJmdsb2JhbE9iamVjdC0+ZC0+cmVnaXN0ZXJzLCByZWdU
MCk7CisgICAgbG9hZFB0cigmZ2xvYmFsT2JqZWN0LT5tX3JlZ2lzdGVycywgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCAq
IHNpemVvZihSZWdpc3RlcikpLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KQEAgLTQ2MSw3ICs0NjEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiB7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMSk7CiAg
ICAgSlNWYXJpYWJsZU9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpOwotICAgIGxvYWRQdHIoJmdsb2JhbE9iamVjdC0+ZC0+cmVnaXN0ZXJzLCByZWdUMCk7
CisgICAgbG9hZFB0cigmZ2xvYmFsT2JqZWN0LT5tX3JlZ2lzdGVycywgcmVnVDApOwogICAgIHN0
b3JlUHRyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogfQogCkBAIC00ODMsOCArNDgzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdUMCk7
CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWlu
Tm9kZSwgb2JqZWN0KSksIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVD
VF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0LCBkKSksIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0OjpKU1ZhcmlhYmxl
T2JqZWN0RGF0YSwgcmVnaXN0ZXJzKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIE9CSkVDVF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0LCBtX3JlZ2lzdGVycykpLCByZWdU
MCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQpAQCAtNTA4LDggKzUw
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5l
eHQpKSwgcmVnVDEpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VU
T0YoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCkpLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgZCkpLCByZWdUMSk7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVj
dDo6SlNWYXJpYWJsZU9iamVjdERhdGEsIHJlZ2lzdGVycykpLCByZWdUMSk7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgbV9yZWdp
c3RlcnMpKSwgcmVnVDEpOwogICAgIHN0b3JlUHRyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24g
ODAyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM1LDEwICsyMzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8g
VGhpcyBKU0FjdGl2YXRpb24gZnVuY3Rpb24gaXMgZGVmaW5lZCBoZXJlIHNvIGl0IGNhbiBnZXQg
YXQgQXJndW1lbnRzOjpzZXRSZWdpc3RlcnMuCiAgICAgaW5saW5lIHZvaWQgSlNBY3RpdmF0aW9u
Ojpjb3B5UmVnaXN0ZXJzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghZCgpLT5yZWdpc3RlckFy
cmF5KTsKKyAgICAgICAgQVNTRVJUKCFtX3JlZ2lzdGVyQXJyYXkpOwogCi0gICAgICAgIHNpemVf
dCBudW1QYXJhbWV0ZXJzTWludXNUaGlzID0gZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFt
ZXRlckNvdW50KCk7Ci0gICAgICAgIHNpemVfdCBudW1WYXJzID0gZCgpLT5mdW5jdGlvbkV4ZWN1
dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpOworICAgICAgICBzaXplX3QgbnVtUGFyYW1l
dGVyc01pbnVzVGhpcyA9IG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOwor
ICAgICAgICBzaXplX3QgbnVtVmFycyA9IG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZh
cmlhYmxlQ291bnQoKTsKICAgICAgICAgc2l6ZV90IG51bUxvY2FscyA9IG51bVZhcnMgKyBudW1Q
YXJhbWV0ZXJzTWludXNUaGlzOwogCiAgICAgICAgIGlmICghbnVtTG9jYWxzKQpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSBu
dW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXpl
OwogICAgICAgICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemUgPSBudW1Mb2NhbHMgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAKLSAgICAgICAgT3duQXJyYXlQdHI8UmVnaXN0
ZXI+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShkKCktPnJlZ2lzdGVycyAtIHJl
Z2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSk7CisgICAgICAgIE93bkFycmF5UHRyPFJl
Z2lzdGVyPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkobV9yZWdpc3RlcnMgLSBy
ZWdpc3Rlck9mZnNldCwgcmVnaXN0ZXJBcnJheVNpemUpOwogICAgICAgICBSZWdpc3RlciogcmVn
aXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgICAgICBz
ZXRSZWdpc3RlcnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSk7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3Bw
CShyZXZpc2lvbiA4MDIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCwxOSBAQCBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTQWN0aXZhdGlvbik7CiBjb25zdCBDbGFzc0luZm8gSlNBY3RpdmF0
aW9uOjpzX2luZm8gPSB7ICJKU0FjdGl2YXRpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwIH07CiAK
IEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb25OdWxs
UGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IGZ1bmN0aW9uRXhlY3V0YWJsZSkKLSAgICA6
IEJhc2UoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVyZSwgbmV3IEpT
QWN0aXZhdGlvbkRhdGEoZnVuY3Rpb25FeGVjdXRhYmxlLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygp
KSkKKyAgICA6IEJhc2UoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVy
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1ib2xUYWJsZSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKQorICAgICwgbV9mdW5jdGlvbkV4ZWN1dGFibGUoZnVuY3Rpb25FeGVjdXRhYmxlKQogewog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisKKyAgICAvLyBXZSBoYXZlIHRvIG1hbnVh
bGx5IHJlZiBhbmQgZGVyZWYgdGhlIHN5bWJvbCB0YWJsZSBhcyBKU1ZhcmlhYmxlT2JqZWN0RGF0
YQorICAgIC8vIGRvZXNuJ3Qga25vdyBhYm91dCBTaGFyZWRTeW1ib2xUYWJsZQorICAgIHN0YXRp
Y19jYXN0PFNoYXJlZFN5bWJvbFRhYmxlKj4obV9zeW1ib2xUYWJsZSktPnJlZigpOwogfQogCiBK
U0FjdGl2YXRpb246On5KU0FjdGl2YXRpb24oKQogewotICAgIGRlbGV0ZSBkKCk7CisgICAgc3Rh
dGljX2Nhc3Q8U2hhcmVkU3ltYm9sVGFibGUqPihtX3N5bWJvbFRhYmxlKS0+ZGVyZWYoKTsKIH0K
IAogdm9pZCBKU0FjdGl2YXRpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykK
QEAgLTU1LDE2ICs2MCwxNiBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtT
dGFjCiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICAvLyBObyBuZWVk
IHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZp
bGUuCi0gICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBkKCktPnJlZ2lzdGVyQXJyYXkuZ2V0
KCk7CisgICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7
CiAgICAgaWYgKCFyZWdpc3RlckFycmF5KQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3Qg
bnVtUGFyYW1ldGVyc01pbnVzVGhpcyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpOworICAgIHNpemVfdCBudW1QYXJhbWV0ZXJzTWludXNUaGlzID0gbV9mdW5jdGlv
bkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7CiAKICAgICBzaXplX3QgY291bnQgPSBudW1Q
YXJhbWV0ZXJzTWludXNUaGlzOwogICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kVmFsdWVz
KHJlZ2lzdGVyQXJyYXksIGNvdW50KTsKIAotICAgIHNpemVfdCBudW1WYXJzID0gZCgpLT5mdW5j
dGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpOworICAgIHNpemVfdCBudW1W
YXJzID0gbV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpOwogCiAg
ICAgLy8gU2tpcCB0aGUgY2FsbCBmcmFtZSwgd2hpY2ggc2l0cyBiZXR3ZWVuIHRoZSBwYXJhbWV0
ZXJzIGFuZCB2YXJzLgogICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXkgKyBjb3VudCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgbnVt
VmFycywgTWF5Q29udGFpbk51bGxWYWx1ZXMpOwpAQCAtNzQsNyArNzksNyBAQCBpbmxpbmUgYm9v
bCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0CiB7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAg
IGlmICghZW50cnkuaXNOdWxsKCkpIHsKLSAgICAgICAgQVNTRVJUKGVudHJ5LmdldEluZGV4KCkg
PCBzdGF0aWNfY2FzdDxpbnQ+KGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlh
YmxlQ291bnQoKSkpOworICAgICAgICBBU1NFUlQoZW50cnkuZ2V0SW5kZXgoKSA8IHN0YXRpY19j
YXN0PGludD4obV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKSk7
CiAgICAgICAgIHNsb3Quc2V0VmFsdWUocmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5qc1Zh
bHVlKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05MCw3ICs5NSw3IEBAIGlu
bGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIEFTU0VSVChlbnRyeS5nZXRJbmRleCgpIDwgc3RhdGljX2Nhc3Q8aW50PihkKCktPmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpKTsKKyAgICBBU1NFUlQoZW50
cnkuZ2V0SW5kZXgoKSA8IHN0YXRpY19jYXN0PGludD4obV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNh
cHR1cmVkVmFyaWFibGVDb3VudCgpKSk7CiAgICAgcmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KSA9IHZhbHVlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTksNyArMTA0LDcgQEAgdm9pZCBK
U0FjdGl2YXRpb246OmdldE93blByb3BlcnR5TmFtZXMoRQogewogICAgIFN5bWJvbFRhYmxlOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBzeW1ib2xUYWJsZSgpLmVuZCgpOwogICAgIGZvciAoU3ltYm9s
VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3ltYm9sVGFibGUoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuZ2V0SW5kZXgoKSA8IHN0YXRp
Y19jYXN0PGludD4oZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3Vu
dCgpKSk7CisgICAgICAgIEFTU0VSVChpdC0+c2Vjb25kLmdldEluZGV4KCkgPCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkpOwog
ICAgICAgICBpZiAoIShpdC0+c2Vjb25kLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAo
bW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmZpcnN0LmdldCgpKSk7CiAgICAgfQpAQCAt
MTE2LDcgKzEyMSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRl
ci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwotICAgIGlmIChlbnRyeS5n
ZXRJbmRleCgpID49IHN0YXRpY19jYXN0PGludD4oZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPmNh
cHR1cmVkVmFyaWFibGVDb3VudCgpKSkKKyAgICBpZiAoZW50cnkuZ2V0SW5kZXgoKSA+PSBzdGF0
aWNfY2FzdDxpbnQ+KG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpOwogICAgIHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkgPSB2YWx1ZTsKQEAgLTE5
NSwxNSArMjAwLDE1IEBAIEpTVmFsdWUgSlNBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNPYmplY3QK
ICAgICAKIGJvb2wgSlNBY3RpdmF0aW9uOjppc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5
bmFtaWNDaGVja3MpIGNvbnN0CiB7Ci0gICAgcmVxdWlyZXNEeW5hbWljQ2hlY2tzID0gZCgpLT5m
dW5jdGlvbkV4ZWN1dGFibGUtPnVzZXNFdmFsKCk7CisgICAgcmVxdWlyZXNEeW5hbWljQ2hlY2tz
ID0gbV9mdW5jdGlvbkV4ZWN1dGFibGUtPnVzZXNFdmFsKCk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCiBKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTQWN0aXZhdGlvbiog
YWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzbG90QmFzZSk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShhY3RpdmF0aW9uLT5kKCktPnJlZ2lzdGVycyk7Ci0g
ICAgaW50IGFyZ3VtZW50c1JlZ2lzdGVyID0gYWN0aXZhdGlvbi0+ZCgpLT5mdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlKCkuYXJndW1lbnRzUmVnaXN0ZXIoKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGFjdGl2YXRpb24tPm1fcmVnaXN0
ZXJzKTsKKyAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBhY3RpdmF0aW9uLT5tX2Z1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKS5hcmd1bWVudHNSZWdpc3RlcigpOwogICAg
IGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVudHNS
ZWdpc3RlcikuanNWYWx1ZSgpKQogICAgICAgICByZXR1cm4gYXJndW1lbnRzOwogICAgIGludCBy
ZWFsQXJndW1lbnRzUmVnaXN0ZXIgPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1l
bnRzUmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDIzICs3Miw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwg
T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFy
aWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3Ry
dWN0IEpTQWN0aXZhdGlvbkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEgewotICAg
ICAgICAgICAgSlNBY3RpdmF0aW9uRGF0YShOb25OdWxsUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1
dGFibGU+IF9mdW5jdGlvbkV4ZWN1dGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCi0gICAgICAg
ICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YShfZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1i
b2xUYWJsZSgpLCByZWdpc3RlcnMpCi0gICAgICAgICAgICAgICAgLCBmdW5jdGlvbkV4ZWN1dGFi
bGUoX2Z1bmN0aW9uRXhlY3V0YWJsZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBoYXZlIHRvIG1hbnVhbGx5IHJlZiBhbmQgZGVyZWYgdGhlIHN5bWJvbCB0YWJsZSBhcyBK
U1ZhcmlhYmxlT2JqZWN0RGF0YQotICAgICAgICAgICAgICAgIC8vIGRvZXNuJ3Qga25vdyBhYm91
dCBTaGFyZWRTeW1ib2xUYWJsZQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
c3ltYm9sVGFibGUoKS0+cmVmKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB+SlNBY3Rp
dmF0aW9uRGF0YSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
U2hhcmVkU3ltYm9sVGFibGUqPihzeW1ib2xUYWJsZSktPmRlcmVmKCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIFJlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IGZ1bmN0aW9uRXhlY3V0
YWJsZTsKLSAgICAgICAgfTsKLQogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIGJvb2wgc3lt
Ym9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJ
c1dyaXRlYWJsZSk7CkBAIC05OCw3ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwogICAgICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmMgZ2V0QXJndW1lbnRzR2V0dGVyKCk7CiAKLSAgICAgICAgSlNBY3RpdmF0aW9uRGF0YSog
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbkRhdGEqPihKU1Zhcmlh
YmxlT2JqZWN0OjpkKTsgfQorICAgICAgICBSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBtX2Z1
bmN0aW9uRXhlY3V0YWJsZTsKICAgICB9OwogCiAgICAgSlNBY3RpdmF0aW9uKiBhc0FjdGl2YXRp
b24oSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
cmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNDExLDggKzQxMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAKICAgICBpbmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVD
bGFzc0ZvcihzaXplX3QgYnl0ZXMpCiAgICAgewotICAgICAgICBBU1NFUlQoYnl0ZXMgJiYgYnl0
ZXMgPD0gcHJlY2lzZUN1dG9mZik7Ci0gICAgICAgIHJldHVybiBtX3ByZWNpc2VTaXplQ2xhc3Nl
c1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKKyAgICAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5
dGVzIDwgbWF4Q2VsbFNpemUpOworICAgICAgICBpZiAoYnl0ZXMgPCBwcmVjaXNlQ3V0b2ZmKQor
ICAgICAgICAgICAgcmV0dXJuIG1fcHJlY2lzZVNpemVDbGFzc2VzWyhieXRlcyAtIDEpIC8gcHJl
Y2lzZVN0ZXBdOworICAgICAgICByZXR1cm4gbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMg
LSAxKSAvIGltcHJlY2lzZVN0ZXBdOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkKiBNYXJrZWRT
cGFjZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gODAyMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDE1ICs5NCwxMyBAQCBKU0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0
KCkKIHsKICAgICBBU1NFUlQoSlNMb2NrOjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsK
IAotICAgIGlmIChkKCktPmRlYnVnZ2VyKQotICAgICAgICBkKCktPmRlYnVnZ2VyLT5kZXRhY2go
dGhpcyk7CisgICAgaWYgKG1fZGVidWdnZXIpCisgICAgICAgIG1fZGVidWdnZXItPmRldGFjaCh0
aGlzKTsKIAogICAgIFByb2ZpbGVyKiogcHJvZmlsZXIgPSBQcm9maWxlcjo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlKCk7CiAgICAgaWYgKFVOTElLRUxZKCpwcm9maWxlciAhPSAwKSkgewogICAg
ICAgICAoKnByb2ZpbGVyKS0+c3RvcFByb2ZpbGluZyhnbG9iYWxFeGVjKCksIFVTdHJpbmcoKSk7
CiAgICAgfQotCi0gICAgZCgpLT5kZXN0cnVjdG9yKGQoKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkKQEAgLTExMSwxNCArMTA5LDE0IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXMKICAgICAKICAgICBzdHJ1Y3R1
cmUoKS0+ZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpOwogCi0gICAgZCgpLT5nbG9i
YWxEYXRhID0gSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpOwotICAgIGQoKS0+Z2xvYmFs
U2NvcGVDaGFpbi5zZXQoKmQoKS0+Z2xvYmFsRGF0YSwgdGhpcywgbmV3IChkKCktPmdsb2JhbERh
dGEuZ2V0KCkpIFNjb3BlQ2hhaW5Ob2RlKDAsIHRoaXMsIGQoKS0+Z2xvYmFsRGF0YS5nZXQoKSwg
dGhpcywgdGhpc1ZhbHVlKSk7CisgICAgbV9nbG9iYWxEYXRhID0gSGVhcDo6aGVhcCh0aGlzKS0+
Z2xvYmFsRGF0YSgpOworICAgIG1fZ2xvYmFsU2NvcGVDaGFpbi5zZXQoKm1fZ2xvYmFsRGF0YSwg
dGhpcywgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIFNjb3BlQ2hhaW5Ob2RlKDAsIHRoaXMsIG1f
Z2xvYmFsRGF0YS5nZXQoKSwgdGhpcywgdGhpc1ZhbHVlKSk7CiAKLSAgICBKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAsIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbi5nZXQoKSwg
Q2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsKKyAgICBKU0dsb2JhbE9iamVjdDo6Z2xvYmFs
RXhlYygpLT5pbml0KDAsIDAsIG1fZ2xvYmFsU2NvcGVDaGFpbi5nZXQoKSwgQ2FsbEZyYW1lOjpu
b0NhbGxlcigpLCAwLCAwKTsKIAotICAgIGQoKS0+ZGVidWdnZXIgPSAwOworICAgIG1fZGVidWdn
ZXIgPSAwOwogCi0gICAgZCgpLT5wcm9maWxlR3JvdXAgPSAwOworICAgIG1fcHJvZmlsZUdyb3Vw
ID0gMDsKIAogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KQEAgLTE3Nyw4MCArMTc1LDgwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KIAogICAgIC8vIFByb3Rv
dHlwZXMKIAotICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbmV3IChleGVjKSBGdW5jdGlvblByb3RvdHlwZShleGVjLCB0aGlzLCBGdW5jdGlv
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkpOyAvLyBUaGUgcmVhbCBwcm90
b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBk
KCktPmZ1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlLmdldCgpKTsKKyAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsgLy8gVGhlIHJlYWwg
cHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCisg
ICAgbV9mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUg
PSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKICAgICBKU0Z1bmN0aW9u
KiBhcHBseUZ1bmN0aW9uID0gMDsKLSAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5j
dGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwg
JmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwotICAgIGQoKS0+Y2FsbEZ1bmN0aW9uLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNhbGxGdW5jdGlvbik7Ci0gICAgZCgpLT5hcHBs
eUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwot
ICAgIGQoKS0+b2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5l
dyAoZXhlYykgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwot
ICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRo
b3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCksICZjYWxsRnVuY3Rpb24sICZhcHBseUZ1bmN0aW9uKTsKKyAgICBtX2Nh
bGxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwor
ICAgIG1fYXBwbHlGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBhcHBseUZ1
bmN0aW9uKTsKKyAgICBtX29iamVjdFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkp
KTsKKyAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0
aG91dFRyYW5zaXRpb24obV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5lbXB0
eU9iamVjdFN0cnVjdHVyZSA9IGQoKS0+b2JqZWN0UHJvdG90eXBlLT5pbmhlcml0b3JJRCgpOwor
ICAgIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUgPSBtX29iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9y
SUQoKTsKIAotICAgIGQoKS0+Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwot
ICAgIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlID0gQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+Y2FsbGJhY2tDb25zdHJ1Y3Rv
clN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJl
ID0gSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fYXJndW1lbnRzU3RydWN0dXJlID0gQXJndW1lbnRz
OjpjcmVhdGVTdHJ1Y3R1cmUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2FsbGJh
Y2tDb25zdHJ1Y3RvclN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlID0gSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+OjpjcmVh
dGVTdHJ1Y3R1cmUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5hcnJheVBy
b3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEFycmF5UHJv
dG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgZCgpLT5hcnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmFycmF5UHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCktPnJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSA9IFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBBcnJheVByb3RvdHlwZSh0aGlz
LCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSkpOworICAgIG1fYXJyYXlTdHJ1Y3R1cmUgPSBKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUobV9h
cnJheVByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUg
PSBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShtX2FycmF5UHJvdG90eXBlLmdl
dCgpKTsKIAotICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0cmluZ1Byb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwotICAg
IGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fc3RyaW5nUHJvdG90eXBlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIFN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSkpOworICAgIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5i
b29sZWFuUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
Qm9vbGVhblByb3RvdHlwZShleGVjLCB0aGlzLCBCb29sZWFuUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpKSk7Ci0gICAgZCgpLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlID0gQm9vbGVhbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9i
b29sZWFuUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
Qm9vbGVhblByb3RvdHlwZShleGVjLCB0aGlzLCBCb29sZWFuUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
KSk7CisgICAgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlID0gQm9vbGVhbk9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPm51bWJlclBy
b3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE51bWJlclBy
b3RvdHlwZShleGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCkt
Pm9iamVjdFByb3RvdHlwZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsK
LSAgICBkKCktPm51bWJlck9iamVjdFN0cnVjdHVyZSA9IE51bWJlck9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+bnVtYmVyUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX251bWJlclByb3RvdHlw
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE51bWJlclByb3RvdHlw
ZShleGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBtX251bWJl
ck9iamVjdFN0cnVjdHVyZSA9IE51bWJlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKG1fbnVtYmVy
UHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+ZGF0ZVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIERhdGVQcm90b3R5cGUoZXhlYywgdGhpcywgRGF0
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkp
OwotICAgIGQoKS0+ZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9kYXRlUHJvdG90eXBlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlz
LCBEYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSk7CisgICAgbV9kYXRlU3RydWN0dXJlID0gRGF0ZUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
bV9kYXRlUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+cmVnRXhwUHJvdG90eXBlLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgUmVnRXhwUHJvdG90eXBlKGV4ZWMs
IHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90
eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwotICAgIGQoKS0+cmVn
RXhwU3RydWN0dXJlID0gUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5yZWdFeHBQ
cm90b3R5cGUuZ2V0KCkpOworICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG5ldyAoZXhlYykgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFJlZ0V4
cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9m
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIG1fcmVnRXhwU3RydWN0dXJlID0gUmVnRXhw
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUobV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAg
ZCgpLT5tZXRob2RDYWxsRHVtbXkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYykpOworICAgIG1fbWV0aG9kQ2FsbER1bW15LnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKIAotICAgIEVy
cm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgRXJyb3JQcm90b3R5cGUo
ZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+
ZXJyb3JTdHJ1Y3R1cmUgPSBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90
b3R5cGUpOworICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykg
RXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwor
ICAgIG1fZXJyb3JTdHJ1Y3R1cmUgPSBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJy
b3JQcm90b3R5cGUpOwogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVj
dENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBPYmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBG
dW5jdGlvbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlw
ZS5nZXQoKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBzdHJp
bmdDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywg
U3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5
cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3Rv
dHlwZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
TnVtYmVyQ29uc3RydWN0b3IoZXhlYywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5
cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCksIGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1
Y3RvciA9IG5ldyAoZXhlYykgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgdGhpcywgT2JqZWN0Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOworICAgIEpT
Q2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgRnVuY3Rpb25Db25zdHJ1Y3Rv
cihleGVjLCB0aGlzLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIEpT
Q2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQXJyYXlDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpOworICAgIEpTQ2VsbCogc3RyaW5nQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIFN0cmlu
Z0NvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFN0cmluZ0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUobV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCks
IG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIGJvb2xlYW5Db25zdHJ1Y3Rv
ciA9IG5ldyAoZXhlYykgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEJvb2xlYW5Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Jv
b2xlYW5Qcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogbnVtYmVyQ29uc3RydWN0b3IgPSBu
ZXcgKGV4ZWMpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE51bWJlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fbnVtYmVyUHJv
dG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIGRhdGVDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
RGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIERhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
LCBtX2RhdGVQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cENvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CisgICAg
bV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4
ZWMpIFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUobV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90eXBl
LmdldCgpKSk7CiAKLSAgICBkKCktPmVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbmV3IChleGVjKSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgZXJyb3JQcm90b3R5cGUpKTsKKyAgICBtX2Vycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMs
IEVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgZXJyb3JQcm90b3R5cGUpKTsKIAogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShlcnJvclByb3RvdHlwZSk7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Ci0gICAgZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvci5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90
eXBlU3RydWN0dXJlLCAiRXZhbEVycm9yIikpOwotICAgIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVj
dG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJSYW5nZUVycm9yIikpOwotICAgIGQoKS0+cmVmZXJlbmNlRXJy
b3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmVmZXJlbmNlRXJyb3IiKSk7Ci0gICAgZCgp
LT5zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50YXhFcnJvciIpKTsK
LSAgICBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJUeXBlRXJyb3Ii
KSk7Ci0gICAgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJVUklFcnJv
ciIpKTsKLQotICAgIGQoKS0+b2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmFycmF5UHJvdG90eXBlLT5wdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAg
ZCgpLT5ib29sZWFuUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBi
b29sZWFuQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPnN0cmluZ1Byb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBkKCktPm51bWJlclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmRhdGVQcm90
b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGRhdGVDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOwotICAgIGQoKS0+cmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0g
ICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+
ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZXZhbEVycm9yQ29uc3Ry
dWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIpKTsKKyAgICBtX3JhbmdlRXJyb3JDb25z
dHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpKTsKKyAgICBtX3JlZmVyZW5jZUVy
cm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9yIikpOworICAgIG1f
c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiU3ludGF4RXJyb3IiKSk7Cisg
ICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIikpOwor
ICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVVJJRXJyb3IiKSk7CisK
KyAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5w
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CisgICAgbV9hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fYm9vbGVhblByb3RvdHlw
ZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgYm9vbGVhbkNvbnN0cnVjdG9yLCBE
b250RW51bSk7CisgICAgbV9zdHJpbmdQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9udW1iZXJQcm90
b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG51bWJlckNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgbV9kYXRlUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX3JlZ0V4cFByb3Rv
dHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOworICAgIGVycm9yUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKIAog
ICAgIC8vIFNldCBnbG9iYWwgY29uc3RydWN0b3JzCiAKQEAgLTI2Myw0MiArMjYxLDQyIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiU3RyaW5nIiksIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJEYXRlIiksIGRhdGVDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWdFeHAiKSwgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBkKCktPmVycm9yQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXZhbEVycm9yIiksIGQoKS0+
ZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiUmFuZ2VFcnJvciIpLCBkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBkKCktPnJlZmVyZW5j
ZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
U3ludGF4RXJyb3IiKSwgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgIlR5cGVFcnJvciIpLCBkKCktPnR5cGVFcnJvckNvbnN0
cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiks
IGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJSZWdFeHAiKSwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXZhbEVycm9yIiksIG1fZXZhbEVycm9yQ29u
c3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmFuZ2VFcnJv
ciIpLCBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU3ludGF4RXJyb3IiKSwgbV9z
eW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIlR5cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKSwgRG9udEVudW0pOwogCiAgICAgLy8gU2V0IGdsb2JhbCB2YWx1ZXMuCiAgICAgR2xvYmFs
UHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKElkZW50aWZpZXIoZXhlYywgIk1hdGgiKSwgbmV3IChleGVjKSBNYXRoT2JqZWN0KGV4ZWMs
IHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5n
ZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8oSWRlbnRpZmllcihleGVjLCAiTWF0aCIpLCBuZXcgKGV4ZWMpIE1hdGhPYmplY3QoZXhlYywg
dGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJOYU4iKSwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAi
SW5maW5pdHkiKSwganNOdW1iZXIoSW5mKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAidW5kZWZp
bmVkIiksIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkpTT04iKSwgbmV3
IChleGVjKSBKU09OT2JqZWN0KHRoaXMsIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCkt
Pm9iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUpCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAoZXhlYykg
SlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUobV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQogICAgIH07CiAKICAgICBhZGRT
dGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFs
cykpOwogCiAgICAgLy8gU2V0IGdsb2JhbCBmdW5jdGlvbnMuCiAKLSAgICBkKCktPmV2YWxGdW5j
dGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24o
ZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBkKCktPmV2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIs
IElkZW50aWZpZXIoZXhlYywgInBhcnNlSW50IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgp
LCAxLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUZsb2F0IiksIGdsb2JhbEZ1bmNQYXJzZUZsb2F0
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzTmFOIiksIGdsb2JhbEZ1bmNJc05hTiks
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc0Zpbml0ZSIpLCBnbG9iYWxGdW5jSXNGaW5p
dGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZXNjYXBlIiksIGdsb2JhbEZ1bmNFc2Nh
cGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAidW5lc2NhcGUiKSwgZ2xvYmFsRnVuY1Vu
ZXNjYXBlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSSIpLCBnbG9iYWxG
dW5jRGVjb2RlVVJJKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSUNvbXBv
bmVudCIpLCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50KSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0
aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZp
ZXIoZXhlYywgImVuY29kZVVSSSIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJKSwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgImVuY29kZVVSSUNvbXBvbmVudCIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJ
Q29tcG9uZW50KSwgRG9udEVudW0pOworICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgZ2xvYmFs
RnVuY0V2YWwpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywg
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMiwgSWRlbnRpZmllcihleGVjLCAicGFyc2VJbnQi
KSwgZ2xvYmFsRnVuY1BhcnNlSW50KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMs
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxv
YXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywg
dGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNO
YU4iKSwgZ2xvYmFsRnVuY0lzTmFOKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMs
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzRmluaXRl
IiksIGdsb2JhbEZ1bmNJc0Zpbml0ZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlz
LCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUi
KSwgZ2xvYmFsRnVuY0VzY2FwZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBt
X2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJ1bmVzY2FwZSIp
LCBnbG9iYWxGdW5jVW5lc2NhcGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywg
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJ
IiksIGdsb2JhbEZ1bmNEZWNvZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhp
cywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZGVjb2Rl
VVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRl
bnRpZmllcihleGVjLCAiZW5jb2RlVVJJIiksIGdsb2JhbEZ1bmNFbmNvZGVVUkkpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwg
SWRlbnRpZmllcihleGVjLCAiZW5jb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNFbmNvZGVV
UklDb21wb25lbnQpLCBEb250RW51bSk7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMs
IHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywg
ImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMs
ICJqc2NwcmludCIpLCBnbG9iYWxGdW5jSlNDUHJpbnQpLCBEb250RW51bSk7CiAjZW5kaWYKIAog
ICAgIHJlc2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CkBAIC0zMTAsNyArMzA4LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNWYQogICAgIHNldFByb3RvdHlwZShwcm90
b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIG9sZExhc3RJblByb3RvdHlwZUNoYWluID0gbGFzdElu
UHJvdG90eXBlQ2hhaW4odGhpcyk7Ci0gICAgSlNPYmplY3QqIG9iamVjdFByb3RvdHlwZSA9IGQo
KS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOworICAgIEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUg
PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsKICAgICBpZiAob2xkTGFzdEluUHJvdG90eXBlQ2hh
aW4gIT0gb2JqZWN0UHJvdG90eXBlKQogICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+
c2V0UHJvdG90eXBlKG9iamVjdFByb3RvdHlwZSk7CiB9CkBAIC0zMTksNjYgKzMxNyw2NiBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0CiB7CiAgICAgSlNWYXJpYWJs
ZU9iamVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAgICAgCi0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJmQoKS0+Z2xvYmFsU2NvcGVDaGFpbik7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fZ2xvYmFsU2NvcGVDaGFpbik7CiAKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJmQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
JmQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJmQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJmQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJmQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwotCi0gICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmZCgpLT5jYWxsRnVuY3Rpb24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPmFwcGx5RnVuY3Rpb24pOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQo
KS0+b2JqZWN0UHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5m
dW5jdGlvblByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+YXJy
YXlQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPmJvb2xlYW5Q
cm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPnN0cmluZ1Byb3Rv
dHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+bnVtYmVyUHJvdG90eXBl
KTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5kYXRlUHJvdG90eXBlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5yZWdFeHBQcm90b3R5cGUpOwotCi0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+bWV0aG9kQ2FsbER1bW15KTsKLQotICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmFycmF5U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCBkKCktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIGQoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7Ci0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmRhdGVTdHJ1Y3R1cmUpOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIGQoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBkKCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7Ci0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yZWdFeHBTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCAmbV9yZWdFeHBDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1fZXZhbEVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
Jm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX1VSSUVycm9yQ29uc3RydWN0b3IpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
Jm1fZXZhbEZ1bmN0aW9uKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsRnVu
Y3Rpb24pOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2FwcGx5RnVuY3Rpb24pOwor
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fb2JqZWN0UHJvdG90eXBlKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9mdW5jdGlvblByb3RvdHlwZSk7CisgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgJm1fYXJyYXlQcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssICZtX2Jvb2xlYW5Qcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZtX3N0cmluZ1Byb3RvdHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1f
bnVtYmVyUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9kYXRlUHJv
dG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9yZWdFeHBQcm90b3R5cGUp
OworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fbWV0aG9kQ2FsbER1bW15KTsKKwor
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIG1fYXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBtX2FycmF5U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBtX2RhdGVTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
IG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1f
ZXJyb3JTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9yZWdFeHBTdHJ1Y3R1
cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJl
KTsKIAogICAgIC8vIE5vIG5lZWQgdG8gbWFyayB0aGUgb3RoZXIgc3RydWN0dXJlcywgYmVjYXVz
ZSB0aGVpciBwcm90b3R5cGVzIGFyZSBhbGwKICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIHJlZmVy
ZW5jZWQgZWxzZXdoZXJlLgogCi0gICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSkgeworICAgIGlm
IChtX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9m
IGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAgICAgICAv
LyB3ZSBjYW4gbWFyayB0aGUgdG9ybi1vZmYgYXJyYXkuCi0gICAgICAgIG1hcmtTdGFjay5kZXBy
ZWNhdGVkQXBwZW5kVmFsdWVzKGQoKS0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZCgpLT5yZWdpc3Rl
ckFycmF5U2l6ZSk7Ci0gICAgfSBlbHNlIGlmIChkKCktPnJlZ2lzdGVycykgeworICAgICAgICBt
YXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIG1f
cmVnaXN0ZXJBcnJheVNpemUpOworICAgIH0gZWxzZSBpZiAobV9yZWdpc3RlcnMpIHsKICAgICAg
ICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVz
IGFyZSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0
ZWxscyB1cyBob3cgbWFueSB2YXJpYWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAg
ICAgIC8vIHBvaW50cyB0byB3aGVyZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBm
b3IgZXhlY3V0aW9uIGJlZ2luLgotICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZh
bHVlcyhkKCktPnJlZ2lzdGVycyAtIHN5bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgp
LnNpemUoKSk7CisgICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kVmFsdWVzKG1fcmVn
aXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCksIHN5bWJvbFRhYmxlKCkuc2l6ZSgpKTsKICAg
ICB9CiB9CiAKIEV4ZWNTdGF0ZSogSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKQogewotICAg
IHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShkKCktPmdsb2JhbENhbGxGcmFtZSArIFJlZ2lzdGVy
RmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRl
KG1fZ2xvYmFsQ2FsbEZyYW1lICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsK
IH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUoYm9vbCYpIGNvbnN0CkBA
IC0zODgsMTIgKzM4NiwxMiBAQCBib29sIEpTR2xvYmFsT2JqZWN0Ojppc0R5bmFtaWNTY29wZShi
b29sCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzRnJvbShSZWdpc3RlckZpbGUm
IHJlZ2lzdGVyRmlsZSkKIHsKLSAgICBBU1NFUlQoIWQoKS0+cmVnaXN0ZXJBcnJheSk7Ci0gICAg
QVNTRVJUKCFkKCktPnJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICBBU1NFUlQoIW1fcmVnaXN0ZXJB
cnJheSk7CisgICAgQVNTRVJUKCFtX3JlZ2lzdGVyQXJyYXlTaXplKTsKIAogICAgIGludCBudW1H
bG9iYWxzID0gcmVnaXN0ZXJGaWxlLm51bUdsb2JhbHMoKTsKICAgICBpZiAoIW51bUdsb2JhbHMp
IHsKLSAgICAgICAgZCgpLT5yZWdpc3RlcnMgPSAwOworICAgICAgICBtX3JlZ2lzdGVycyA9IDA7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxMSw4ICs0MDksOCBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojpjb3B5R2xvYmFsc1RvKFJlZ2lzCiAgICAgcmVnaXN0ZXJGaWxlLnNldEdsb2Jh
bE9iamVjdCh0aGlzKTsKICAgICByZWdpc3RlckZpbGUuc2V0TnVtR2xvYmFscyhzeW1ib2xUYWJs
ZSgpLnNpemUoKSk7CiAKLSAgICBpZiAoZCgpLT5yZWdpc3RlckFycmF5KSB7Ci0gICAgICAgIG1l
bWNweShyZWdpc3RlckZpbGUuc3RhcnQoKSAtIGQoKS0+cmVnaXN0ZXJBcnJheVNpemUsIGQoKS0+
cmVnaXN0ZXJBcnJheS5nZXQoKSwgZCgpLT5yZWdpc3RlckFycmF5U2l6ZSAqIHNpemVvZihSZWdp
c3RlcikpOworICAgIGlmIChtX3JlZ2lzdGVyQXJyYXkpIHsKKyAgICAgICAgbWVtY3B5KHJlZ2lz
dGVyRmlsZS5zdGFydCgpIC0gbV9yZWdpc3RlckFycmF5U2l6ZSwgbV9yZWdpc3RlckFycmF5Lmdl
dCgpLCBtX3JlZ2lzdGVyQXJyYXlTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAgICAgICAgIHNl
dFJlZ2lzdGVycyhyZWdpc3RlckZpbGUuc3RhcnQoKSwgMCwgMCk7CiAgICAgfQogfQpAQCAtNDI0
LDEwICs0MjIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzaXplUmVnaXN0ZXJzKGludAog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG5ld1NpemUgJiYgbmV3U2l6ZSA+IG9sZFNpemUp
OwogCi0gICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSB8fCAhZCgpLT5yZWdpc3RlcnMpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4ob2xkU2l6ZSkgPT0gZCgpLT5yZWdpc3Rl
ckFycmF5U2l6ZSk7CisgICAgaWYgKG1fcmVnaXN0ZXJBcnJheSB8fCAhbV9yZWdpc3RlcnMpIHsK
KyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4ob2xkU2l6ZSkgPT0gbV9yZWdpc3Rl
ckFycmF5U2l6ZSk7CiAgICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5ID0gbmV3IFJlZ2lz
dGVyW25ld1NpemVdOwotICAgICAgICBtZW1jcHkocmVnaXN0ZXJBcnJheSArIG5ld1NpemUgLSBv
bGRTaXplLCBkKCktPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIG9sZFNpemUgKiBzaXplb2YoUmVnaXN0
ZXIpKTsKKyAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXkgKyBuZXdTaXplIC0gb2xkU2l6ZSwg
bV9yZWdpc3RlckFycmF5LmdldCgpLCBvbGRTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAgICAg
ICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlckFycmF5ICsgbmV3U2l6ZSwgcmVnaXN0ZXJBcnJheSwg
bmV3U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4obmV3U2l6ZSkgPCBnbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLm1h
eEdsb2JhbHMoKSk7CkBAIC00MzUsNyArNDMzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
aXplUmVnaXN0ZXJzKGludAogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAtbmV3U2l6ZTsgaSA8
IC1vbGRTaXplOyArK2kpCi0gICAgICAgIGQoKS0+cmVnaXN0ZXJzW2ldID0ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgbV9yZWdpc3RlcnNbaV0gPSBqc1VuZGVmaW5lZCgpOwogfQogCiB2b2lkKiBK
U0dsb2JhbE9iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpCkBAIC00NDMsMTEgKzQ0MSw2IEBAIHZvaWQqIEpTR2xvYmFsT2JqZWN0OjpvcGVy
YXRvciBuZXcoc2l6ZV8KICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0ZShzaXpl
KTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6ZGVzdHJveUpTR2xvYmFsT2JqZWN0RGF0YSh2
b2lkKiBqc0dsb2JhbE9iamVjdERhdGEpCi17Ci0gICAgZGVsZXRlIHN0YXRpY19jYXN0PEpTR2xv
YmFsT2JqZWN0RGF0YSo+KGpzR2xvYmFsT2JqZWN0RGF0YSk7Ci19Ci0KIER5bmFtaWNHbG9iYWxP
YmplY3RTY29wZTo6RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCkKICAgICA6IG1fZHluYW1pY0ds
b2JhbE9iamVjdFNsb3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVj
dCkKICAgICAsIG1fc2F2ZWREeW5hbWljR2xvYmFsT2JqZWN0KG1fZHluYW1pY0dsb2JhbE9iamVj
dFNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOTIgKzU0LDc0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
VmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdXNpbmcgSlNWYXJpYWJs
ZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGE7CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAKLSAgICAgICAgc3Ry
dWN0IEpTR2xvYmFsT2JqZWN0RGF0YSA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0RGF0YSB7Ci0g
ICAgICAgICAgICAvLyBXZSB1c2UgYW4gZXhwbGljaXQgZGVzdHJ1Y3RvciBmdW5jdGlvbiBwb2lu
dGVyIGluc3RlYWQgb2YgYQotICAgICAgICAgICAgLy8gdmlydHVhbCBkZXN0cnVjdG9yIGJlY2F1
c2Ugd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgYSB2dGFibGUKLSAgICAgICAgICAgIC8vIHBvaW50
ZXIgdG8gdGhpcyBzdHJ1Y3QuIEFkZGluZyBhIHZ0YWJsZSBwb2ludGVyIHdvdWxkIGZvcmNlIHRo
ZQotICAgICAgICAgICAgLy8gY29tcGlsZXIgdG8gZW1pdCBjb3N0bHkgcG9pbnRlciBmaXh1cCBj
b2RlIHdoZW4gY2FzdGluZyBmcm9tCi0gICAgICAgICAgICAvLyBKU1ZhcmlhYmxlT2JqZWN0RGF0
YSogdG8gSlNHbG9iYWxPYmplY3REYXRhKi4KLSAgICAgICAgICAgIHR5cGVkZWYgdm9pZCAoKkRl
c3RydWN0b3IpKHZvaWQqKTsKLQotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKERlc3Ry
dWN0b3IgZGVzdHJ1Y3RvcikKLSAgICAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3REYXRh
KCZzeW1ib2xUYWJsZSwgMCkKLSAgICAgICAgICAgICAgICAsIGRlc3RydWN0b3IoZGVzdHJ1Y3Rv
cikKLSAgICAgICAgICAgICAgICAsIHJlZ2lzdGVyQXJyYXlTaXplKDApCi0gICAgICAgICAgICAg
ICAgLCBnbG9iYWxTY29wZUNoYWluKCkKLSAgICAgICAgICAgICAgICAsIHdlYWtSYW5kb20oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSArIDEuMCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBEZXN0cnVjdG9yIGRlc3RydWN0b3I7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHNpemVfdCByZWdpc3RlckFycmF5U2l6ZTsKLQotICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIG5leHQ7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogcHJl
djsKLQotICAgICAgICAgICAgRGVidWdnZXIqIGRlYnVnZ2VyOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8U2NvcGVDaGFpbk5vZGU+IGdsb2JhbFNjb3BlQ2hhaW47Ci0g
ICAgICAgICAgICBSZWdpc3RlciBnbG9iYWxDYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplXTsKLQotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVj
dG9yPiByZWdFeHBDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxFcnJvckNv
bnN0cnVjdG9yPiBlcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I+IGV2YWxFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAg
V3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IHJhbmdlRXJyb3JDb25zdHJ1Y3Rv
cjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiByZWZl
cmVuY2VFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I+IHN5bnRheEVycm9yQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gdHlwZUVycm9yQ29uc3RydWN0b3I7Ci0g
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gVVJJRXJyb3JD
b25zdHJ1Y3RvcjsKLQotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGV2YWxG
dW5jdGlvbjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsRnVuY3Rp
b247Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gYXBwbHlGdW5jdGlvbjsK
LQotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gb2JqZWN0UHJvdG90
eXBlOwotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBmdW5jdGlv
blByb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gYXJy
YXlQcm90b3R5cGU7Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8Qm9vbGVhblByb3RvdHlwZT4g
Ym9vbGVhblByb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJpbmdQcm90b3R5
cGU+IHN0cmluZ1Byb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOdW1iZXJQcm90
b3R5cGU+IG51bWJlclByb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxEYXRlUHJv
dG90eXBlPiBkYXRlUHJvdG90eXBlOwotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFBy
b3RvdHlwZT4gcmVnRXhwUHJvdG90eXBlOwotCi0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8SlNP
YmplY3Q+IG1ldGhvZENhbGxEdW1teTsKLQotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
YXJndW1lbnRzU3RydWN0dXJlOwotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYXJyYXlT
dHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBib29sZWFuT2JqZWN0U3Ry
dWN0dXJlOwotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gY2FsbGJhY2tDb25zdHJ1Y3Rv
clN0cnVjdHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGNhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBjYWxsYmFja09iamVj
dFN0cnVjdHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRhdGVTdHJ1Y3R1cmU7
Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBlbXB0eU9iamVjdFN0cnVjdHVyZTsKLSAg
ICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGVycm9yU3RydWN0dXJlOwotICAgICAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBudW1iZXJPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBp
bnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBzaXplX3QgbV9yZWdpc3RlckFycmF5
U2l6ZTsKIAotICAgICAgICAgICAgU3ltYm9sVGFibGUgc3ltYm9sVGFibGU7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBwcm9maWxlR3JvdXA7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBtX25leHQ7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBtX3ByZXY7CiAKLSAgICAgICAgICAgIFJlZlB0cjxK
U0dsb2JhbERhdGE+IGdsb2JhbERhdGE7CisgICAgICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwor
ICAgICAgICAKKyAgICAgICAgV3JpdGVCYXJyaWVyPFNjb3BlQ2hhaW5Ob2RlPiBtX2dsb2JhbFNj
b3BlQ2hhaW47CisgICAgICAgIFJlZ2lzdGVyIG1fZ2xvYmFsQ2FsbEZyYW1lW1JlZ2lzdGVyRmls
ZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CiAKLSAgICAgICAgICAgIFdlYWtNYXBTZXQgd2Vha01h
cHM7Ci0gICAgICAgICAgICBXZWFrUmFuZG9tIHdlYWtSYW5kb207Ci0gICAgICAgIH07CisgICAg
ICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPEVycm9yQ29uc3RydWN0b3I+IG1fZXJyb3JDb25zdHJ1Y3Rv
cjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fZXZhbEVy
cm9yQ29uc3RydWN0b3I7CisgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I+IG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fc3ludGF4RXJyb3JDb25zdHJ1
Y3RvcjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlw
ZUVycm9yQ29uc3RydWN0b3I7CisgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CisKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsRnVuY3Rpb247CisgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Fw
cGx5RnVuY3Rpb247CisKKyAgICAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9v
YmplY3RQcm90b3R5cGU7CisgICAgICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4g
bV9mdW5jdGlvblByb3RvdHlwZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBl
PiBtX2FycmF5UHJvdG90eXBlOworICAgICAgICBXcml0ZUJhcnJpZXI8Qm9vbGVhblByb3RvdHlw
ZT4gbV9ib29sZWFuUHJvdG90eXBlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90
eXBlPiBtX3N0cmluZ1Byb3RvdHlwZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPE51bWJlclByb3Rv
dHlwZT4gbV9udW1iZXJQcm90b3R5cGU7CisgICAgICAgIFdyaXRlQmFycmllcjxEYXRlUHJvdG90
eXBlPiBtX2RhdGVQcm90b3R5cGU7CisgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5
cGU+IG1fcmVnRXhwUHJvdG90eXBlOworCisgICAgICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9tZXRob2RDYWxsRHVtbXk7CisKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9hcmd1bWVu
dHNTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fYXJyYXlTdHJ1Y3R1cmU7
CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZTsKKyAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOwor
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7Cisg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmU7CisgICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fZGF0ZVN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gbV9lbXB0eU9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gbV9lcnJvclN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9mdW5jdGlv
blN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmU7CisgICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKKworICAgICAg
ICBTeW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOworICAgICAgICB1bnNpZ25lZCBtX3Byb2ZpbGVH
cm91cDsKKworICAgICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBtX2dsb2JhbERhdGE7CisKKyAg
ICAgICAgV2Vha01hcFNldCBtX3dlYWtNYXBzOworICAgICAgICBXZWFrUmFuZG9tIG1fd2Vha1Jh
bmRvbTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
SlNHbG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVj
dCgpCi0gICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZVN0cnVjdHVyZShqc051bGwoKSksIG5ldyBKU0dsb2JhbE9iamVjdERhdGEoZGVzdHJveUpTR2xv
YmFsT2JqZWN0RGF0YSkpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksICZtX3N5bWJvbFRhYmxlLCAwKQorICAg
ICAgICAgICAgLCBtX3JlZ2lzdGVyQXJyYXlTaXplKDApCisgICAgICAgICAgICAsIG1fZ2xvYmFs
U2NvcGVDaGFpbigpCisgICAgICAgICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpICsgMS4wKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKEpTR2xv
YmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgPT0gMSwgSlNHbG9iYWxPYmplY3RfaGFzX29u
bHlfYV9zaW5nbGVfc2xvdCk7CiAgICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1vdXNWYWx1ZSgw
KTsKQEAgLTE0Nyw3ICsxMjksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KHN0cnVj
dHVyZSwgbmV3IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKSkK
KyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxl
LCAwKQorICAgICAgICAgICAgLCBtX3JlZ2lzdGVyQXJyYXlTaXplKDApCisgICAgICAgICAgICAs
IG1fZ2xvYmFsU2NvcGVDaGFpbigpCisgICAgICAgICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpICsgMS4wKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgPT0gMSwgSlNHbG9iYWxPYmpl
Y3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAgICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1v
dXNWYWx1ZSgwKTsKQEAgLTE1NSw4ICsxNDAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgSlNHbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0RGF0YSogZGF0YSwgSlNP
YmplY3QqIHRoaXNWYWx1ZSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChzdHJ1Y3R1
cmUsIGRhdGEpCisgICAgICAgIEpTR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiBKU1Zh
cmlhYmxlT2JqZWN0KHN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIDApCisgICAgICAgICAgICAs
IG1fcmVnaXN0ZXJBcnJheVNpemUoMCkKKyAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWlu
KCkKKyAgICAgICAgICAgICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5k
b21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjAp
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmplY3Q6
OkFub255bW91c1Nsb3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3Npbmds
ZV9zbG90KTsKICAgICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOwpAQCAtMTg0
LDU1ICsxNzIsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
YWNjZXNzb3JzIHJldHVybiBwcmlzdGluZSB2YWx1ZXMsIGV2ZW4gaWYgYSBzY3JpcHQgCiAgICAg
ICAgIC8vIHJlcGxhY2VzIHRoZSBnbG9iYWwgb2JqZWN0J3MgYXNzb2NpYXRlZCBwcm9wZXJ0eS4K
IAotICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIFJlZ0V4cENv
bnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29u
c3RydWN0b3IuZ2V0KCk7IH0KIAotICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0g
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCkt
PnR5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPlVSSUVycm9y
Q29uc3RydWN0b3IuZ2V0KCk7IH0KLQotICAgICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxGdW5jdGlvbi5nZXQoKTsgfQotCi0gICAgICAgIE9i
amVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5vYmpl
Y3RQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9u
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQotICAgICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBkKCktPmFycmF5UHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIEJvb2xlYW5Qcm90b3R5cGUq
IGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmJvb2xlYW5Qcm90b3R5cGUu
Z2V0KCk7IH0KLSAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBOdW1iZXJQ
cm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bnVtYmVyUHJv
dG90eXBlLmdldCgpOyB9Ci0gICAgICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBkKCktPmRhdGVQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgUmVnRXhw
UHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFBy
b3RvdHlwZS5nZXQoKTsgfQotCi0gICAgICAgIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXkoKSBj
b25zdCB7IHJldHVybiBkKCktPm1ldGhvZENhbGxEdW1teS5nZXQoKTsgfQotCi0gICAgICAgIFN0
cnVjdHVyZSogYXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5hcmd1bWVu
dHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3Ry
dWN0dXJlKiBib29sZWFuT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5ib29s
ZWFuT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogY2FsbGJhY2tD
b25zdHJ1Y3RvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+Y2FsbGJhY2tDb25zdHJ1
Y3RvclN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAg
ICAgICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5kYXRl
U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmVtcHR5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Ci0g
ICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmVy
cm9yU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAg
ICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBpbnRl
cm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBkKCktPnJlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1
cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGF4
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsg
fQorCisgICAgICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXZhbEZ1bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTRnVuY3Rp
b24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7
IH0KKworICAgICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEZ1bmN0aW9uUHJvdG90
eXBlKiBmdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCk7IH0KKyAgICAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQorICAgICAgICBCb29sZWFuUHJv
dG90eXBlKiBib29sZWFuUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ib29sZWFuUHJvdG90
eXBlLmdldCgpOyB9CisgICAgICAgIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgTnVtYmVy
UHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3Rv
dHlwZS5nZXQoKTsgfQorICAgICAgICBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRlUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIFJlZ0V4cFByb3Rv
dHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUu
Z2V0KCk7IH0KKworICAgICAgICBKU09iamVjdCogbWV0aG9kQ2FsbER1bW15KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRob2RDYWxsRHVtbXkuZ2V0KCk7IH0KKworICAgICAgICBTdHJ1Y3R1cmUqIGFy
Z3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzU3RydWN0dXJlLmdl
dCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FycmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogYm9vbGVhbk9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
KyAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVj
dHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNr
T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1
Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbXB0eU9iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09i
amVjdFN0cnVjdHVyZS5nZXQoKTsgfQogCi0gICAgICAgIHZvaWQgc2V0UHJvZmlsZUdyb3VwKHVu
c2lnbmVkIHZhbHVlKSB7IGQoKS0+cHJvZmlsZUdyb3VwID0gdmFsdWU7IH0KLSAgICAgICAgdW5z
aWduZWQgcHJvZmlsZUdyb3VwKCkgY29uc3QgeyByZXR1cm4gZCgpLT5wcm9maWxlR3JvdXA7IH0K
KyAgICAgICAgdm9pZCBzZXRQcm9maWxlR3JvdXAodW5zaWduZWQgdmFsdWUpIHsgbV9wcm9maWxl
R3JvdXAgPSB2YWx1ZTsgfQorICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3Byb2ZpbGVHcm91cDsgfQogCi0gICAgICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcigp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGVidWdnZXI7IH0KLSAgICAgICAgdm9pZCBzZXREZWJ1Z2dl
cihEZWJ1Z2dlciogZGVidWdnZXIpIHsgZCgpLT5kZWJ1Z2dlciA9IGRlYnVnZ2VyOyB9CisgICAg
ICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KKyAg
ICAgICAgdm9pZCBzZXREZWJ1Z2dlcihEZWJ1Z2dlciogZGVidWdnZXIpIHsgbV9kZWJ1Z2dlciA9
IGRlYnVnZ2VyOyB9CiAKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUHJvZmlsaW5nKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmlj
aFNvdXJjZUluZm8oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgU2NvcGVDaGFp
bk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJldHVybiBkKCktPmdsb2JhbFNjb3BlQ2hhaW4u
Z2V0KCk7IH0KKyAgICAgICAgU2NvcGVDaGFpbk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJl
dHVybiBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCk7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTI1MCw4ICsyNDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTVmFs
dWUgcHJvdG90eXBlKTsKIAotICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25z
dCB7IHJldHVybiAqZCgpLT5nbG9iYWxEYXRhLmdldCgpOyB9Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0RGF0YSogZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0RGF0
YSo+KEpTVmFyaWFibGVPYmplY3Q6OmQpOyB9CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSgpIGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbERhdGEuZ2V0KCk7IH0KIAogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewpAQCAtMjYwLDE1ICsyNDksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCByZWdpc3RlcldlYWtNYXAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwKiBtYXAp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGQoKS0+d2Vha01hcHMuYWRkKG1hcCk7CisgICAgICAg
ICAgICBtX3dlYWtNYXBzLmFkZChtYXApOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZXJl
Z2lzdGVyV2Vha01hcChPcGFxdWVKU1dlYWtPYmplY3RNYXAqIG1hcCkKICAgICAgICAgewotICAg
ICAgICAgICAgZCgpLT53ZWFrTWFwcy5yZW1vdmUobWFwKTsKKyAgICAgICAgICAgIG1fd2Vha01h
cHMucmVtb3ZlKG1hcCk7CiAgICAgICAgIH0KIAotICAgICAgICBkb3VibGUgd2Vha1JhbmRvbU51
bWJlcigpIHsgcmV0dXJuIGQoKS0+d2Vha1JhbmRvbS5nZXQoKTsgfQorICAgICAgICBkb3VibGUg
d2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQogICAgIHBy
b3RlY3RlZDoKIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENv
dW50ID0gSlNWYXJpYWJsZU9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKQEAgLTI4OSw4
ICsyNzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxz
KEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqKTsKLQogICAgICAg
ICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIHZvaWQgaW5pdChKU09i
amVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7
CkBAIC0zMTEsMTYgKzI5OCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBK
U0dsb2JhbE9iamVjdDo6c2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMsIFBhc3NPd25B
cnJheVB0cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KQogICAgIHsKICAg
ICAgICAgSlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKHJlZ2lzdGVycywgcmVnaXN0ZXJB
cnJheSk7Ci0gICAgICAgIGQoKS0+cmVnaXN0ZXJBcnJheVNpemUgPSBjb3VudDsKKyAgICAgICAg
bV9yZWdpc3RlckFycmF5U2l6ZSA9IGNvdW50OwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEpT
R2xvYmFsT2JqZWN0OjphZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyogZ2xvYmFs
cywgaW50IGNvdW50KQogICAgIHsKLSAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBkKCktPnJlZ2lz
dGVyQXJyYXlTaXplOworICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IG1fcmVnaXN0ZXJBcnJheVNp
emU7CiAgICAgICAgIHNpemVfdCBuZXdTaXplID0gb2xkU2l6ZSArIGNvdW50OwogICAgICAgICBS
ZWdpc3RlciogcmVnaXN0ZXJBcnJheSA9IG5ldyBSZWdpc3RlcltuZXdTaXplXTsKLSAgICAgICAg
aWYgKGQoKS0+cmVnaXN0ZXJBcnJheSkKLSAgICAgICAgICAgIG1lbWNweShyZWdpc3RlckFycmF5
ICsgY291bnQsIGQoKS0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgb2xkU2l6ZSAqIHNpemVvZihSZWdp
c3RlcikpOworICAgICAgICBpZiAobV9yZWdpc3RlckFycmF5KQorICAgICAgICAgICAgbWVtY3B5
KHJlZ2lzdGVyQXJyYXkgKyBjb3VudCwgbV9yZWdpc3RlckFycmF5LmdldCgpLCBvbGRTaXplICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CiAgICAgICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlckFycmF5ICsg
bmV3U2l6ZSwgcmVnaXN0ZXJBcnJheSwgbmV3U2l6ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9
IDAsIGluZGV4ID0gLXN0YXRpY19jYXN0PGludD4ob2xkU2l6ZSkgLSAxOyBpIDwgY291bnQ7ICsr
aSwgLS1pbmRleCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNPYmplY3QpOwogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChKU05vbkZpbmFsT2JqZWN0KTsKLUFTU0VSVF9DTEFTU19GSUxMU19D
RUxMKEpTRmluYWxPYmplY3QpOworQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0ZpbmFsT2Jq
ZWN0KTsKIAogY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
ID0gIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIjsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5jcHAJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwx
MiBAQAogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7
Ci0KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNTdGF0aWNTY29wZU9iamVjdCk7CiAKIHZv
aWQgSlNTdGF0aWNTY29wZU9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogewogICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAg
IG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKCZkKCktPnJlZ2lzdGVyU3RvcmUpOworICAgIG1h
cmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKCZtX3JlZ2lzdGVyU3RvcmUpOwogfQogCiBKU09iamVj
dCogSlNTdGF0aWNTY29wZU9iamVjdDo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKQEAgLTY4LDEyICs2Nyw2IEBAIGJvb2wgSlNTdGF0aWNTY29wZU9iamVjdDo6aXNEeW5hbWlj
U2NvcGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTU3RhdGljU2NvcGVPYmplY3Q6On5KU1N0
YXRpY1Njb3BlT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQoZCgpKTsKLSAgICBkZWxldGUgZCgpOwot
fQotCiBpbmxpbmUgYm9vbCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCShyZXZpc2lvbiA4MDIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjUgKzMx
LDE0IEBACiBuYW1lc3BhY2UgSlNDewogICAgIAogICAgIGNsYXNzIEpTU3RhdGljU2NvcGVPYmpl
Y3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICB1
c2luZyBKU1ZhcmlhYmxlT2JqZWN0OjpKU1ZhcmlhYmxlT2JqZWN0RGF0YTsKLSAgICAgICAgc3Ry
dWN0IEpTU3RhdGljU2NvcGVPYmplY3REYXRhIDogcHVibGljIEpTVmFyaWFibGVPYmplY3REYXRh
IHsKLSAgICAgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3REYXRhKCkKLSAgICAgICAgICAgICAg
ICA6IEpTVmFyaWFibGVPYmplY3REYXRhKCZzeW1ib2xUYWJsZSwgJnJlZ2lzdGVyU3RvcmUgKyAx
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgU3ltYm9sVGFibGUg
c3ltYm9sVGFibGU7Ci0gICAgICAgICAgICBSZWdpc3RlciByZWdpc3RlclN0b3JlOwotICAgICAg
ICB9OwotICAgICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChleGVj
LT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUsIG5ldyBKU1N0YXRpY1Njb3BlT2Jq
ZWN0RGF0YSgpKQorICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKS5zdGF0aWNTY29wZVN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsICZtX3JlZ2lzdGVyU3Rv
cmUgKyAxKQogICAgICAgICB7Ci0gICAgICAgICAgICBkKCktPnJlZ2lzdGVyU3RvcmUgPSB2YWx1
ZTsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJTdG9yZSA9IHZhbHVlOwogICAgICAgICAgICAgc3lt
Ym9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KC0xLCBhdHRyaWJ1
dGVzKSk7CiAgICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+SlNTdGF0aWNTY29wZU9iamVjdCgp
OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAgICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNv
bnN0OwpAQCAtNjQsNyArNTMsOCBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdERhdGEqIGQoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0RGF0YSo+KEpTVmFyaWFibGVPYmplY3Q6
OmQpOyB9CisgICAgICAgIFN5bWJvbFRhYmxlIG1fc3ltYm9sVGFibGU7CisgICAgICAgIFJlZ2lz
dGVyIG1fcmVnaXN0ZXJTdG9yZTsKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiA4MDIxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxlOyB9CisgICAgICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAKQEAgLTU0
LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zhcmlh
YmxlT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShi
b29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0ID0gMDsKIAotICAgICAgICBSZWdpc3Rl
ciYgcmVnaXN0ZXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lzdGVyc1tpbmRl
eF07IH0KKyAgICAgICAgUmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyc1tpbmRleF07IH0KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpA
QCAtNjMsMzAgKzYzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgICAg
IC8vIFN1YmNsYXNzZXMgb2YgSlNWYXJpYWJsZU9iamVjdCBjYW4gc3ViY2xhc3MgdGhpcyBzdHJ1
Y3QgdG8gYWRkIGRhdGEKLSAgICAgICAgLy8gd2l0aG91dCBpbmNyZWFzaW5nIHRoZWlyIG93biBz
aXplIChzaW5jZSB0aGVyZSdzIGEgaGFyZCBsaW1pdCBvbiB0aGUKLSAgICAgICAgLy8gc2l6ZSBv
ZiBhIEpTQ2VsbCkuCi0gICAgICAgIHN0cnVjdCBKU1ZhcmlhYmxlT2JqZWN0RGF0YSB7Ci0gICAg
ICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0RGF0YShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFJl
Z2lzdGVyKiByZWdpc3RlcnMpCi0gICAgICAgICAgICAgICAgOiBzeW1ib2xUYWJsZShzeW1ib2xU
YWJsZSkKLSAgICAgICAgICAgICAgICAsIHJlZ2lzdGVycyhyZWdpc3RlcnMpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFRhYmxlKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlOyAvLyBNYXBzIG5hbWUgLT4g
b2Zmc2V0IGZyb20gInIiIGluIHJlZ2lzdGVyIGZpbGUuCi0gICAgICAgICAgICBSZWdpc3Rlciog
cmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZpbGUuCi0gICAgICAgICAgICBPd25B
cnJheVB0cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheTsgLy8gSW5kZXBlbmRlbnQgY29weSBvZiBy
ZWdpc3RlcnMsIHVzZWQgd2hlbiBhIHZhcmlhYmxlIG9iamVjdCBjb3BpZXMgaXRzIHJlZ2lzdGVy
cyBvdXQgb2YgdGhlIHJlZ2lzdGVyIGZpbGUuCi0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAg
ICAgIEpTVmFyaWFibGVPYmplY3REYXRhKGNvbnN0IEpTVmFyaWFibGVPYmplY3REYXRhJik7Ci0g
ICAgICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0RGF0YSYgb3BlcmF0b3I9KGNvbnN0IEpTVmFyaWFi
bGVPYmplY3REYXRhJik7Ci0gICAgICAgIH07CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdChO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNWYXJpYWJsZU9iamVjdERh
dGEqIGRhdGEpCisgICAgICAgIEpTVmFyaWFibGVPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgUmVnaXN0ZXIqIHJl
Z2lzdGVycykKICAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCi0gICAg
ICAgICAgICAsIGQoZGF0YSkgLy8gU3ViY2xhc3Mgb3ducyB0aGlzIHBvaW50ZXIuCisgICAgICAg
ICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCisgICAgICAgICAgICAsIG1fcmVnaXN0
ZXJzKHJlZ2lzdGVycykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fc3ltYm9sVGFi
bGUpOwogICAgICAgICB9CiAKICAgICAgICAgUGFzc093bkFycmF5UHRyPFJlZ2lzdGVyPiBjb3B5
UmVnaXN0ZXJBcnJheShSZWdpc3Rlciogc3JjLCBzaXplX3QgY291bnQpOwpAQCAtOTgsNyArODEs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChjb25zdCBJ
ZGVudGlmaWVyJiwgSlNWYWx1ZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlcyhjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdERhdGEqIGQ7CisgICAgICAgIFN5bWJvbFRhYmxl
KiBtX3N5bWJvbFRhYmxlOyAvLyBNYXBzIG5hbWUgLT4gb2Zmc2V0IGZyb20gInIiIGluIHJlZ2lz
dGVyIGZpbGUuCisgICAgICAgIFJlZ2lzdGVyKiBtX3JlZ2lzdGVyczsgLy8gInIiIGluIHRoZSBy
ZWdpc3RlciBmaWxlLgorICAgICAgICBPd25BcnJheVB0cjxSZWdpc3Rlcj4gbV9yZWdpc3RlckFy
cmF5OyAvLyBJbmRlcGVuZGVudCBjb3B5IG9mIHJlZ2lzdGVycywgdXNlZCB3aGVuIGEgdmFyaWFi
bGUgb2JqZWN0IGNvcGllcyBpdHMgcmVnaXN0ZXJzIG91dCBvZiB0aGUgcmVnaXN0ZXIgZmlsZS4K
ICAgICB9OwogCiAgICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVH
ZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBA
IC0xNTksOSArMTQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgdm9pZCBKU1Zh
cmlhYmxlT2JqZWN0OjpzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywgUGFzc093bkFy
cmF5UHRyPFJlZ2lzdGVyPiByZWdpc3RlckFycmF5KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJl
Z2lzdGVyQXJyYXkgIT0gZC0+cmVnaXN0ZXJBcnJheSk7Ci0gICAgICAgIGQtPnJlZ2lzdGVyQXJy
YXkgPSByZWdpc3RlckFycmF5OwotICAgICAgICBkLT5yZWdpc3RlcnMgPSByZWdpc3RlcnM7Cisg
ICAgICAgIEFTU0VSVChyZWdpc3RlckFycmF5ICE9IG1fcmVnaXN0ZXJBcnJheSk7CisgICAgICAg
IG1fcmVnaXN0ZXJBcnJheSA9IHJlZ2lzdGVyQXJyYXk7CisgICAgICAgIG1fcmVnaXN0ZXJzID0g
cmVnaXN0ZXJzOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiA4MDIxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsMTAgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEpTR2xv
YmFsRGF0YSogZwogICAgICwgbV9oaWdoV2F0ZXJNYXJrKDApCiAgICAgLCBtX2dsb2JhbERhdGEo
Z2xvYmFsRGF0YSkKIHsKLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBj
ZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkKKyAgICBm
b3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IHByZWNpc2VDdXRv
ZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQorICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNp
emUpLmNlbGxTaXplID0gY2VsbFNpemU7CisKKyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGlt
cHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXBy
ZWNpc2VTdGVwKQogICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2Vs
bFNpemU7CiB9CiAKQEAgLTE0OCw3ICsxNTEsMTAgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXQo
KQogewogICAgIG1fd2F0ZXJNYXJrID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
cHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNp
c2VTdGVwKQorICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXpl
IDwgcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApCisgICAgICAgIHNpemVD
bGFzc0ZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKworICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
aW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPCBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGlt
cHJlY2lzZVN0ZXApCiAgICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkucmVzZXQoKTsKIAog
ICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDgwMjEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsOCArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKGNs
YXNzKSBDT01QSUxFX0FTU0VSVChzaXplb2YoY2xhc3MpIDw9IE1hcmtlZFNwYWNlOjptYXhDZWxs
U2l6ZSwgY2xhc3NfZml0c19pbl9jZWxsKQotI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklMTFNfQ0VM
TChjbGFzcykgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKGNsYXNzKSA9PSBNYXJrZWRTcGFjZTo6bWF4
Q2VsbFNpemUsIGNsYXNzX2ZpbGxzX2NlbGwpCisjZGVmaW5lIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoY2xhc3MpIENPTVBJTEVfQVNTRVJUKHNpemVvZihjbGFzcykgPCBNYXJrZWRTcGFjZTo6
bWF4Q2VsbFNpemUsIGNsYXNzX2ZpdHNfaW5fY2VsbCkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTQ4LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1hcmtlZFNwYWNlKTsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIEN1cnJlbnRseSBwdWJs
aWMgZm9yIHVzZSBpbiBhc3NlcnRpb25zLgotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eENlbGxTaXplID0gNjQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUg
PSAxMDI0OwogCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTQ2VsbCopOwogCkBAIC04MSwx
MCArODAsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaChGdW5jdG9yJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICAv
LyBbIDgsIDE2Li4uIDY0IF0KKyAgICAgICAgLy8gWyA4LCAxNi4uLiAxMjggKQogICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwot
ICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSBtYXhDZWxsU2l6ZTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ291bnQgPSBwcmVjaXNlQ3V0b2Zm
IC8gcHJlY2lzZVN0ZXA7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9m
ZiA9IDEyODsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ291bnQgPSBwcmVj
aXNlQ3V0b2ZmIC8gcHJlY2lzZVN0ZXAgLSAxOworCisgICAgICAgIC8vIFsgMTI4LCAyNTYuLi4g
MTAyNCApCisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IHByZWNp
c2VDdXRvZmY7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0g
bWF4Q2VsbFNpemU7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ291bnQg
PSBpbXByZWNpc2VDdXRvZmYgLyBpbXByZWNpc2VTdGVwIC0gMTsKIAogICAgICAgICB0eXBlZGVm
IEhhc2hTZXQ8TWFya2VkQmxvY2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKIApAQCAtMTA2
LDYgKzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNsZWFyTWFya3MoTWFy
a2VkQmxvY2sqKTsKIAogICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJl
Y2lzZUNvdW50XTsKKyAgICAgICAgU2l6ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1w
cmVjaXNlQ291bnRdOwogICAgICAgICBIYXNoU2V0PE1hcmtlZEJsb2NrKj4gbV9ibG9ja3M7CiAg
ICAgICAgIHNpemVfdCBtX3dhdGVyTWFyazsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFy
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gODAyMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDMtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBhbGwgdmFy
aWFibGUgb2JqZWN0IHN0b3JhZ2UgaW5saW5lIC0tIHVwcGluZyB0aGUgb2JqZWN0IHNpemUgbGlt
aXQgdG8gMUsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU1NjUzCisKKyAgICAgICAgKiBKU1J1bi5jcHA6CisgICAgICAgIChKU0dsdWVHbG9iYWxPYmpl
Y3Q6OkpTR2x1ZUdsb2JhbE9iamVjdCk6CisgICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKEpT
R2x1ZUdsb2JhbE9iamVjdDo6RmxhZ3MpOgorICAgICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0Ojp1
c2VyT2JqZWN0U3RydWN0dXJlKTogUmVtb3ZlZCBvdXQtb2YtbGluZSBzdG9yYWdlLiBDaGFuZ2Vk
IGQtPiB0byBtXy4KKwogMjAxMS0wMy0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRH
bHVlL0pTUnVuLmNwcAkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUv
SlNSdW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTAgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Tb3VyY2VDb2RlLmg+CiAKIEpTR2x1ZUdsb2JhbE9iamVjdDo6SlNHbHVl
R2xvYmFsT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxh
Z3MpCi0gICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIG5ldyBEYXRhLCB0aGlzKQorICAg
IDogSlNHbG9iYWxPYmplY3Qoc3RydWN0dXJlKQorICAgICwgbV9mbGFncyhmbGFncykKKyAgICAs
IG1fdXNlck9iamVjdFN0cnVjdHVyZShVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoanNO
dWxsKCkpKQogewotICAgIGQoKS0+ZmxhZ3MgPSBmbGFnczsKLSAgICBkKCktPnVzZXJPYmplY3RT
dHJ1Y3R1cmUgPSBVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwotfQot
Ci12b2lkIEpTR2x1ZUdsb2JhbE9iamVjdDo6ZGVzdHJveURhdGEodm9pZCogZGF0YSkKLXsKLSAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8RGF0YSo+KGRhdGEpOwogfQogCiBKU1J1bjo6SlNSdW4oQ0ZT
dHJpbmdSZWYgc291cmNlLCBKU0ZsYWdzIGluRmxhZ3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dEdsdWUvSlNSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4u
aAkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMjMgKzM2LDEyIEBAIGNsYXNzIEpTR2x1ZUdsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU0dsb2IKICAgICBwdWJsaWM6CiAgICAgICAgIEpTR2x1ZUdsb2JhbE9iamVjdChQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7CiAKLSAgICAgICAg
SlNGbGFncyBGbGFncygpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZmxhZ3M7IH0KLSAgICAgICAgU3Ry
dWN0dXJlKiB1c2VyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT51c2VyT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpTRmxhZ3MgRmxhZ3MoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzOyB9CisgICAgICAgIFN0cnVjdHVyZSogdXNlck9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgc3RydWN0IERhdGEgOiBKU0dsb2JhbE9iamVjdERhdGEgewotICAgICAg
ICAgICAgRGF0YSgpCi0gICAgICAgICAgICAgICAgOiBKU0dsb2JhbE9iamVjdERhdGEoZGVzdHJv
eURhdGEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHVzZXJPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAg
ICBKU0ZsYWdzIGZsYWdzOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3lEYXRhKHZvaWQqKTsKLQotICAgICAgICBEYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGF0YSo+KEpTR2xvYmFsT2JqZWN0OjpkKCkpOyB9CisgICAgICAgIEpTRmxhZ3MgbV9m
bGFnczsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV91c2VyT2JqZWN0U3RydWN0dXJlOwog
fTsKIAogY2xhc3MgSlNSdW4gOiBwdWJsaWMgSlNCYXNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgwMjEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlZCBhbGwgdmFyaWFibGUgb2JqZWN0IHN0b3JhZ2UgaW5saW5lIC0tIHVwcGluZyB0aGUgb2Jq
ZWN0IHNpemUgbGltaXQgdG8gMUsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1NjUzCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5j
cHA6IFJlbW92ZWQgb3V0LW9mLWxpbmUgc3RvcmFnZS4gQ2hhbmdlZCBkLT4gdG8gbV8uCisKIDIw
MTEtMDMtMDIgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA4MDIxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0lu
Zm8gSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkRPTUdsb2JhbE9iamVjdCIsICZKU0ds
b2JhbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLUpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUds
b2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0RGF0YSogZGF0YSwgSlNPYmplY3QqIHRoaXNW
YWx1ZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgZGF0YSwgdGhpc1ZhbHVlKQor
SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQsIEpT
T2JqZWN0KiB0aGlzVmFsdWUpCisgICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIHRoaXNW
YWx1ZSkKKyAgICAsIG1fZXZ0KDApCisgICAgLCBtX3dvcmxkKHdvcmxkKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiB9CkBAIC02MCwzMyArNjIsMjggQEAgdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcgogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1h
cDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsr
aXQyKQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpdDItPnNlY29uZCk7CiAKLSAgICBpZiAo
ZCgpLT5tX2luamVjdGVkU2NyaXB0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZkKCktPm1f
aW5qZWN0ZWRTY3JpcHQpOworICAgIGlmIChtX2luamVjdGVkU2NyaXB0KQorICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9i
amVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBldnQpCiB7Ci0gICAgZCgpLT5ldnQgPSBldnQ7
CisgICAgbV9ldnQgPSBldnQ7CiB9CiAKIEV2ZW50KiBKU0RPTUdsb2JhbE9iamVjdDo6Y3VycmVu
dEV2ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZCgpLT5ldnQ7CisgICAgcmV0dXJuIG1fZXZ0
OwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRJbmplY3RlZFNjcmlwdChKU09iamVj
dCogaW5qZWN0ZWRTY3JpcHQpCiB7Ci0gICAgZCgpLT5tX2luamVjdGVkU2NyaXB0LnNldChnbG9i
YWxEYXRhKCksIHRoaXMsIGluamVjdGVkU2NyaXB0KTsKKyAgICBtX2luamVjdGVkU2NyaXB0LnNl
dChnbG9iYWxEYXRhKCksIHRoaXMsIGluamVjdGVkU2NyaXB0KTsKIH0KIAogSlNPYmplY3QqIEpT
RE9NR2xvYmFsT2JqZWN0OjppbmplY3RlZFNjcmlwdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQo
KS0+bV9pbmplY3RlZFNjcmlwdC5nZXQoKTsKLX0KLQotdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
ZGVzdHJveUpTRE9NR2xvYmFsT2JqZWN0RGF0YSh2b2lkKiBqc0RPTUdsb2JhbE9iamVjdERhdGEp
Ci17Ci0gICAgZGVsZXRlIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0RGF0YSo+KGpzRE9N
R2xvYmFsT2JqZWN0RGF0YSk7CisgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHQuZ2V0KCk7CiB9
CiAKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1
bWVudCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTEgKzQ2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHN0cnVjdCBKU0RPTUdsb2JhbE9iamVjdERhdGE7CiAKLSAgICAgICAgSlNET01HbG9i
YWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBKU0RPTUdsb2JhbE9i
amVjdERhdGEqLCBKU0M6OkpTT2JqZWN0KiB0aGlzVmFsdWUpOworICAgICAgICBKU0RPTUdsb2Jh
bE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKIAogICAgIHB1YmxpYzoK
LSAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoKSB7IHJldHVybiBkKCktPnN0
cnVjdHVyZXM7IH0KLSAgICAgICAgSlNET01Db25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5jb25zdHJ1Y3RvcnM7IH0KKyAgICAgICAgSlNET01TdHJ1Y3R1
cmVNYXAmIHN0cnVjdHVyZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KKyAgICAgICAgSlNE
T01Db25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7
IH0KIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CiAKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oSlNDOjpNYXJrU3Rh
Y2smKTsKIAotICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gZCgpLT5t
X3dvcmxkLmdldCgpOyB9CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVy
biBtX3dvcmxkLmdldCgpOyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsKIApAQCAtNzUsMzcgKzc1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdHJ1Y3QgSlNET01HbG9iYWxPYmplY3RE
YXRhIDogcHVibGljIEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YSB7Ci0g
ICAgICAgICAgICBKU0RPTUdsb2JhbE9iamVjdERhdGEoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
RGVzdHJ1Y3RvciBkZXN0cnVjdG9yID0gZGVzdHJveUpTRE9NR2xvYmFsT2JqZWN0RGF0YSkKLSAg
ICAgICAgICAgICAgICA6IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cnVjdG9yKQotICAgICAgICAg
ICAgICAgICwgZXZ0KDApCi0gICAgICAgICAgICAgICAgLCBtX3dvcmxkKHdvcmxkKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBKU0RPTVN0cnVjdHVyZU1hcCBz
dHJ1Y3R1cmVzOwotICAgICAgICAgICAgSlNET01Db25zdHJ1Y3Rvck1hcCBjb25zdHJ1Y3RvcnM7
Ci0KLSAgICAgICAgICAgIEV2ZW50KiBldnQ7Ci0gICAgICAgICAgICBSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiBtX3dvcmxkOwotICAgICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNPYmplY3Q+
IG1faW5qZWN0ZWRTY3JpcHQ7Ci0gICAgICAgIH07CisgICAgICAgIEpTRE9NU3RydWN0dXJlTWFw
IG1fc3RydWN0dXJlczsKKyAgICAgICAgSlNET01Db25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9y
czsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0RPTUdsb2Jh
bE9iamVjdERhdGEodm9pZCopOwotCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0RGF0YSogZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0RGF0YSo+KEpTQzo6
SlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KKyAgICAgICAgRXZlbnQqIG1fZXZ0OworICAgICAgICBS
ZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOworICAgICAgICBKU0M6OldyaXRlQmFycmll
cjxKU09iamVjdD4gbV9pbmplY3RlZFNjcmlwdDsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgQ29uc3RydWN0b3JDbGFzcz4KICAgICBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IgPSBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6
c19pbmZvKS5nZXQoKSkKKyAgICAgICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0g
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9y
cygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKS5nZXQoKSkKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBu
ZXcgKGV4ZWMpIENvbnN0cnVjdG9yQ2xhc3MoZXhlYywgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwotICAgICAgICBBU1NFUlQoIWdsb2JhbE9iamVjdC0+Y29u
c3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykpOworICAgICAg
ICBBU1NFUlQoIWNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5j
b25zdHJ1Y3RvcnMoKS5jb250YWlucygmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKSk7CiAgICAg
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IHRlbXA7Ci0gICAgICAgIGdsb2Jh
bE9iamVjdC0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRl
bXApLmZpcnN0LT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywg
dGVtcCkuZmlyc3QtPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qs
IGNvbnN0cnVjdG9yKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShy
ZXZpc2lvbiA4MDIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDIxICs0NSwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldp
bmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLUpTRE9NV2luZG93
QmFzZTo6SlNET01XaW5kb3dCYXNlRGF0YTo6SlNET01XaW5kb3dCYXNlRGF0YShQYXNzUmVmUHRy
PERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKLSAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0RGF0YShzaGVsbC0+d29ybGQoKSwgZGVzdHJveUpTRE9NV2luZG93QmFzZURh
dGEpCi0gICAgLCBpbXBsKHdpbmRvdykKLSAgICAsIHNoZWxsKHNoZWxsKQotewotfQotCiBKU0RP
TVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVs
bCogc2hlbGwpCi0gICAgOiBKU0RPTUdsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIG5ldyBKU0RPTVdp
bmRvd0Jhc2VEYXRhKHdpbmRvdywgc2hlbGwpLCBzaGVsbCkKKyAgICA6IEpTRE9NR2xvYmFsT2Jq
ZWN0KHN0cnVjdHVyZSwgc2hlbGwtPndvcmxkKCksIHNoZWxsKQorICAgICwgbV9pbXBsKHdpbmRv
dykKKyAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRvY3VtZW50Iiks
IGpzTnVsbCgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ3aW5kb3ciKSwgZCgpLT5zaGVsbCwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmll
cihnbG9iYWxFeGVjKCksICJ3aW5kb3ciKSwgbV9zaGVsbCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KQogICAgIH07CiAgICAgCiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZf
QVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKQEAgLTY3LDE5ICs2MiwxOSBAQCBKU0RPTVdp
bmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShOb25OdWxsCiAKIHZvaWQgSlNET01XaW5kb3dCYXNl
Ojp1cGRhdGVEb2N1bWVudCgpCiB7Ci0gICAgQVNTRVJUKGQoKS0+aW1wbC0+ZG9jdW1lbnQoKSk7
CisgICAgQVNTRVJUKG1faW1wbC0+ZG9jdW1lbnQoKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
Z2xvYmFsRXhlYygpOwotICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSWRlbnRpZmll
cihleGVjLCAiZG9jdW1lbnQiKSwgdG9KUyhleGVjLCB0aGlzLCBkKCktPmltcGwtPmRvY3VtZW50
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMoSWRlbnRpZmllcihleGVjLCAiZG9jdW1lbnQiKSwgdG9KUyhleGVjLCB0aGlzLCBtX2lt
cGwtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAogewotICAgIHJldHVybiBkKCktPmltcGwtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1f
aW1wbC0+ZG9jdW1lbnQoKTsKIH0KIAogU3RyaW5nIEpTRE9NV2luZG93QmFzZTo6Y3Jvc3NEb21h
aW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgSlNHbG9iYWxPYmplY3QqIG90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiBkKCktPnNoZWxsLT53aW5kb3coKS0+aW1wbCgpLT5jcm9zc0RvbWFpbkFj
Y2Vzc0Vycm9yTWVzc2FnZShhc0pTRE9NV2luZG93KG90aGVyKS0+aW1wbCgpKTsKKyAgICByZXR1
cm4gbV9zaGVsbC0+d2luZG93KCktPmltcGwoKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3Nh
Z2UoYXNKU0RPTVdpbmRvdyhvdGhlciktPmltcGwoKSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CkBAIC0x
NzAsNyArMTY1LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iagog
CiBKU0RPTVdpbmRvd1NoZWxsKiBKU0RPTVdpbmRvd0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZCgpLT5zaGVsbDsKKyAgICByZXR1cm4gbV9zaGVsbDsKIH0KIAogSlNHbG9iYWxE
YXRhKiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpCkBAIC0xOTAsMTEgKzE4
NSw2IEBAIEpTR2xvYmFsRGF0YSogSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0cKICAgICByZXR1
cm4gZ2xvYmFsRGF0YTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3lKU0RPTVdp
bmRvd0Jhc2VEYXRhKHZvaWQqIGpzRE9NV2luZG93QmFzZURhdGEpCi17Ci0gICAgZGVsZXRlIHN0
YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZURhdGEqPihqc0RPTVdpbmRvd0Jhc2VEYXRhKTsKLX0K
LQogLy8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9yZWQsIGFjY2Vzc2luZyBhIHdpbmRvdyBp
biBhbnkgY29udGV4dCB3aWxsCiAvLyB1c2UgdGhhdCBET01XaW5kb3cncyBwcm90b3R5cGUgY2hh
aW4uCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIERP
TVdpbmRvdyogZG9tV2luZG93KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVE
b2N1bWVudCgpOwogCi0gICAgICAgIERPTVdpbmRvdyogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGQo
KS0+aW1wbC5nZXQoKTsgfQorICAgICAgICBET01XaW5kb3cqIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX2ltcGwuZ2V0KCk7IH0KICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1
c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2luZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwu
CkBAIC04MiwxOSArODIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
SlNDOjpKU0dsb2JhbERhdGEqIGNvbW1vbkpTR2xvYmFsRGF0YSgpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgc3RydWN0IEpTRE9NV2luZG93QmFzZURhdGEgOiBwdWJsaWMgSlNET01HbG9iYWxP
YmplY3REYXRhIHsKLSAgICAgICAgICAgIEpTRE9NV2luZG93QmFzZURhdGEoUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpOwotCi0gICAgICAgICAg
ICBSZWZQdHI8RE9NV2luZG93PiBpbXBsOwotICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCog
c2hlbGw7Ci0gICAgICAgIH07CisgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKKyAg
ICAgICAgSlNET01XaW5kb3dTaGVsbCogbV9zaGVsbDsKIAogICAgICAgICBib29sIGFsbG93c0Fj
Y2Vzc0Zyb21Qcml2YXRlKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lK
U0RPTVdpbmRvd0Jhc2VEYXRhKHZvaWQqKTsKLQotICAgICAgICBKU0RPTVdpbmRvd0Jhc2VEYXRh
KiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlRGF0YSo+KEpT
Qzo6SlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpT
RE9NV2luZG93IG9yIGpzTnVsbCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmgJKHJldmlzaW9uIDgwMjEwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBpbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2VzCiBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShj
b25zdCBKU0dsb2JhbE9iamVjdCogb3RoZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgSlNET01XaW5k
b3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01XaW5kb3cob3RoZXIpOwotICAgIGNvbnN0IEpTRE9N
V2luZG93KiB0YXJnZXRXaW5kb3cgPSBkKCktPnNoZWxsLT53aW5kb3coKTsKKyAgICBjb25zdCBK
U0RPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gbV9zaGVsbC0+d2luZG93KCk7CiAKICAgICBpZiAo
b3JpZ2luV2luZG93ID09IHRhcmdldFdpbmRvdykKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmNwcAkocmV2aXNpb24gODAyMTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTV29ya2VyQ29udGV4CiBjb25zdCBDbGFzc0luZm8gSlNX
b3JrZXJDb250ZXh0QmFzZTo6c19pbmZvID0geyAiV29ya2VyQ29udGV4dCIsICZKU0RPTUdsb2Jh
bE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKIEpTV29ya2VyQ29udGV4dEJhc2U6OkpTV29ya2Vy
Q29udGV4dEJhc2UoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBpbXBsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qo
c3RydWN0dXJlLCBuZXcgSlNET01HbG9iYWxPYmplY3REYXRhKG5vcm1hbFdvcmxkKCppbXBsLT5z
Y3JpcHQoKS0+Z2xvYmFsRGF0YSgpKSksIHRoaXMpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdChz
dHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKCppbXBsLT5zY3JpcHQoKS0+Z2xvYmFsRGF0YSgpKSwgdGhp
cykKICAgICAsIG1faW1wbChpbXBsKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85357</attachid>
            <date>2011-03-10 11:48:20 -0800</date>
            <delta_ts>2011-03-10 11:55:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55653-20110310114820.patch</filename>
            <type>text/plain</type>
            <size>97045</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMDMtMTAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICBSb2xsZWQgYmFjayBpbiA4MDI3
NyBhbmQgODAyODAgd2l0aCBldmVudCBoYW5kbGVyIGxheW91dCB0ZXN0IGZhaWx1cmVzIGZpeGVk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2NTMg
ICAgICAgIAorCisgICAgICAgIFRoZSBmYWlsdXJlcyB3ZXJlIGNhdXNlZCBieSBhIGxhc3QgbWlu
dXRlIHR5cG86IGFzc2lnbmluZyB0byBjdXJyZW50RXZlbnQKKyAgICAgICAgaW5zdGVhZCBvZiBt
X2N1cnJlbnRFdmVudC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2VkU3BhY2UuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvTWFya2VkU3BhY2UuaDoKKwogMjAxMS0wMy0wOSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJh
cnJhY2xvdWdoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQCBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxMmRlZmluZUdldHRlckVQCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmlu
ZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoK
IF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEybWFya0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQog
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVqCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QyNWRlc3Ryb3lKU0dsb2JhbE9iamVjdERhdGFFUHYKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1
UHV0UHJvcGVydHlTbG90RSAgCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Q0aW5pdEVQTlNfOEpT
T2JqZWN0RQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0RDJFdgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDgw
NzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsx
NDcsNiBAQCBFWFBPUlRTCiAgICAgP2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1
cmVASlNDQEBRQUVYQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BA
QFdURkBAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2Rlc3Ryb3lASGVhcEBKU0NAQFFB
RVhYWgotICAgID9kZXN0cm95SlNHbG9iYWxPYmplY3REYXRhQEpTR2xvYmFsT2JqZWN0QEpTQ0BA
Q0FYUEFYQFoKICAgICA/ZGV0YWNoQERlYnVnZ2VyQEpTQ0BAVUFFWFBBVkpTR2xvYmFsT2JqZWN0
QDJAQFoKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgP2RpZFRpbWVPdXRAVGlt
ZW91dENoZWNrZXJASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEBaCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjU0NCw3ICsyNTQ0LDYgQEAKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNp
b24gPSAiWGNvZGUgMy4xIjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhh
c1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xp
c2gsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTA5LDcgKzkwOSw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWkKIAogICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9z
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmNhbGxGdW5j
dGlvbigpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTIwLDcg
KzkyMCw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWkKIAogICAg
IGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25k
LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9i
YWxPYmplY3QtPmQoKS0+YXBwbHlGdW5jdGlvbi5nZXQoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5hcHBseUZ1bmN0aW9uKCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9nbG9iYWxfdmFyKElu
c3RydWMKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKICAgICBp
bnQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCi0gICAgbG9hZFB0
cigmZ2xvYmFsT2JqZWN0LT5kKCktPnJlZ2lzdGVycywgcmVnVDIpOworICAgIGxvYWRQdHIoJmds
b2JhbE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QyKTsKIAogICAgIGVtaXRMb2FkKGluZGV4LCBy
ZWdUMSwgcmVnVDAsIHJlZ1QyKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpA
QCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3Ry
dWMKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwogCi0gICAgbG9hZFB0cigm
Z2xvYmFsT2JqZWN0LT5kKCktPnJlZ2lzdGVycywgcmVnVDIpOworICAgIGxvYWRQdHIoJmdsb2Jh
bE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QyKTsKICAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1Qx
LCByZWdUMCwgcmVnVDIpOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdU
SChvcF9wdXRfZ2xvYmFsX3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwogfQpAQCAtNjUwLDgg
KzY1MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUs
IG5leHQpKSwgcmVnVDIpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZG
U0VUT0YoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgZCkpLCByZWdUMik7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9i
amVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGEsIHJlZ2lzdGVycykpLCByZWdUMik7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgbV9y
ZWdpc3RlcnMpKSwgcmVnVDIpOwogCiAgICAgZW1pdExvYWQoaW5kZXgsIHJlZ1QxLCByZWdUMCwg
cmVnVDIpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC02ODAsOCArNjc5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4
dCkpLCByZWdUMik7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRP
RihTY29wZUNoYWluTm9kZSwgb2JqZWN0KSksIHJlZ1QyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDIsIE9CSkVDVF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0LCBkKSksIHJlZ1QyKTsKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0
OjpKU1ZhcmlhYmxlT2JqZWN0RGF0YSwgcmVnaXN0ZXJzKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihKU1ZhcmlhYmxlT2JqZWN0LCBtX3JlZ2lz
dGVycykpLCByZWdUMik7CiAKICAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVn
VDIpOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9wdXRfc2Nv
cGVkX3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw3ICs0NTIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIEpTVmFyaWFibGVPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsKLSAgICBsb2FkUHRyKCZnbG9iYWxPYmplY3QtPmQtPnJlZ2lzdGVycywgcmVn
VDApOworICAgIGxvYWRQdHIoJmdsb2JhbE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QwKTsKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQg
KiBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkBAIC00NjEsNyArNDYxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogewogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEpOwog
ICAgIEpTVmFyaWFibGVPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKTsKLSAgICBsb2FkUHRyKCZnbG9iYWxPYmplY3QtPmQtPnJlZ2lzdGVycywgcmVnVDAp
OworICAgIGxvYWRQdHIoJmdsb2JhbE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QwKTsKICAgICBz
dG9yZVB0cihyZWdUMSwgQWRkcmVzcyhyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIApAQCAtNDgzLDggKzQ4Myw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwgcmVnVDAp
OwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFp
bk5vZGUsIG9iamVjdCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgZCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdDo6SlNWYXJpYWJs
ZU9iamVjdERhdGEsIHJlZ2lzdGVycykpLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJpYWJsZU9iamVjdCwgbV9yZWdpc3RlcnMpKSwgcmVn
VDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KQEAgLTUwOCw4ICs1
MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2RlLCBu
ZXh0KSksIHJlZ1QxKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNF
VE9GKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTVmFyaWFibGVPYmplY3QsIGQpKSwgcmVnVDEpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTVmFyaWFibGVPYmpl
Y3Q6OkpTVmFyaWFibGVPYmplY3REYXRhLCByZWdpc3RlcnMpKSwgcmVnVDEpOworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTVmFyaWFibGVPYmplY3QsIG1fcmVn
aXN0ZXJzKSksIHJlZ1QxKTsKICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9u
IDgwNzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzNywxMCArMjM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8v
IFRoaXMgSlNBY3RpdmF0aW9uIGZ1bmN0aW9uIGlzIGRlZmluZWQgaGVyZSBzbyBpdCBjYW4gZ2V0
IGF0IEFyZ3VtZW50czo6c2V0UmVnaXN0ZXJzLgogICAgIGlubGluZSB2b2lkIEpTQWN0aXZhdGlv
bjo6Y29weVJlZ2lzdGVycyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewotICAgICAg
ICBBU1NFUlQoIWQoKS0+cmVnaXN0ZXJBcnJheSk7CisgICAgICAgIEFTU0VSVCghbV9yZWdpc3Rl
ckFycmF5KTsKIAotICAgICAgICBzaXplX3QgbnVtUGFyYW1ldGVyc01pbnVzVGhpcyA9IGQoKS0+
ZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOwotICAgICAgICBzaXplX3QgbnVt
VmFycyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKTsK
KyAgICAgICAgc2l6ZV90IG51bVBhcmFtZXRlcnNNaW51c1RoaXMgPSBtX2Z1bmN0aW9uRXhlY3V0
YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICAgICAgc2l6ZV90IG51bVZhcnMgPSBtX2Z1bmN0
aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCk7CiAgICAgICAgIHNpemVfdCBu
dW1Mb2NhbHMgPSBudW1WYXJzICsgbnVtUGFyYW1ldGVyc01pbnVzVGhpczsKIAogICAgICAgICBp
ZiAoIW51bUxvY2FscykKQEAgLTI0OSw3ICsyNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVy
RmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAgICAgc2l6ZV90IHJlZ2lzdGVyQXJyYXlT
aXplID0gbnVtTG9jYWxzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogCi0g
ICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkg
PSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRhLCBkKCktPnJlZ2lzdGVycyAtIHJlZ2lzdGVy
T2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSk7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxE
YXRhLCBtX3JlZ2lzdGVycyAtIHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSk7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5n
ZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgICAgICBzZXRSZWdpc3RlcnMocmVnaXN0ZXJzLCBy
ZWdpc3RlckFycmF5LnJlbGVhc2UoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDMyICs0MCwzNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQWN0aXZh
dGlvbik7CiBjb25zdCBDbGFzc0luZm8gSlNBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJKU0FjdGl2
YXRpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwIH07CiAKIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0
aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSkKLSAgICA6IEJhc2UoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYWN0aXZhdGlvblN0
cnVjdHVyZSwgbmV3IEpTQWN0aXZhdGlvbkRhdGEoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHRo
aXMsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpCisgICAgOiBC
YXNlKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmFjdGl2YXRpb25TdHJ1Y3R1cmUsIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoKSwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkKKyAgICAs
IG1fZnVuY3Rpb25FeGVjdXRhYmxlKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBmdW5j
dGlvbkV4ZWN1dGFibGUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKworICAg
IC8vIFdlIGhhdmUgdG8gbWFudWFsbHkgcmVmIGFuZCBkZXJlZiB0aGUgc3ltYm9sIHRhYmxlIGFz
IEpTVmFyaWFibGVPYmplY3QKKyAgICAvLyBkb2Vzbid0IGtub3cgYWJvdXQgU2hhcmVkU3ltYm9s
VGFibGUKKyAgICBzdGF0aWNfY2FzdDxTaGFyZWRTeW1ib2xUYWJsZSo+KG1fc3ltYm9sVGFibGUp
LT5yZWYoKTsKIH0KIAogSlNBY3RpdmF0aW9uOjp+SlNBY3RpdmF0aW9uKCkKIHsKLSAgICBkZWxl
dGUgZCgpOworICAgIHN0YXRpY19jYXN0PFNoYXJlZFN5bWJvbFRhYmxlKj4obV9zeW1ib2xUYWJs
ZSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSlNBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0g
ICAgbWFya1N0YWNrLmFwcGVuZCgmZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUpOworICAgIG1hcmtT
dGFjay5hcHBlbmQoJm1fZnVuY3Rpb25FeGVjdXRhYmxlKTsKIAogICAgIC8vIE5vIG5lZWQgdG8g
bWFyayBvdXIgcmVnaXN0ZXJzIGlmIHRoZXkncmUgc3RpbGwgaW4gdGhlIFJlZ2lzdGVyRmlsZS4K
LSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSBkKCktPnJlZ2lzdGVy
QXJyYXkuZ2V0KCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0g
bV9yZWdpc3RlckFycmF5LmdldCgpOwogICAgIGlmICghcmVnaXN0ZXJBcnJheSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2l6ZV90IG51bVBhcmFtZXRlcnNNaW51c1RoaXMgPSBkKCktPmZ1bmN0
aW9uRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICBzaXplX3QgbnVtUGFyYW1ldGVy
c01pbnVzVGhpcyA9IG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOwogCiAg
ICAgc2l6ZV90IGNvdW50ID0gbnVtUGFyYW1ldGVyc01pbnVzVGhpczsKICAgICBtYXJrU3RhY2su
YXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIGNvdW50KTsKIAotICAgIHNpemVfdCBudW1WYXJz
ID0gZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpOworICAg
IHNpemVfdCBudW1WYXJzID0gbV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVD
b3VudCgpOwogCiAgICAgLy8gU2tpcCB0aGUgY2FsbCBmcmFtZSwgd2hpY2ggc2l0cyBiZXR3ZWVu
IHRoZSBwYXJhbWV0ZXJzIGFuZCB2YXJzLgogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVn
aXN0ZXJBcnJheSArIGNvdW50ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBu
dW1WYXJzLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CkBAIC03NSw3ICs4MCw3IEBAIGlubGluZSBi
b29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQKIHsKICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAg
ICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewotICAgICAgICBBU1NFUlQoZW50cnkuZ2V0SW5kZXgo
KSA8IHN0YXRpY19jYXN0PGludD4oZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFy
aWFibGVDb3VudCgpKSk7CisgICAgICAgIEFTU0VSVChlbnRyeS5nZXRJbmRleCgpIDwgc3RhdGlj
X2Nhc3Q8aW50PihtX2Z1bmN0aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkp
KTsKICAgICAgICAgc2xvdC5zZXRWYWx1ZShyZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdl
dCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTEsNyArOTYsNyBAQCBpbmxp
bmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBBU1NFUlQoZW50cnkuZ2V0SW5kZXgoKSA8IHN0YXRpY19jYXN0PGludD4oZCgpLT5mdW5jdGlv
bkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKSk7CisgICAgQVNTRVJUKGVudHJ5
LmdldEluZGV4KCkgPCBzdGF0aWNfY2FzdDxpbnQ+KG1fZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0
dXJlZFZhcmlhYmxlQ291bnQoKSkpOwogICAgIHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSku
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEw
MCw3ICsxMDUsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhFCiB7
CiAgICAgU3ltYm9sVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN5bWJvbFRhYmxlKCkuZW5k
KCk7CiAgICAgZm9yIChTeW1ib2xUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzeW1ib2xUYWJs
ZSgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBBU1NFUlQoaXQtPnNlY29u
ZC5nZXRJbmRleCgpIDwgc3RhdGljX2Nhc3Q8aW50PihkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpKTsKKyAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuZ2V0
SW5kZXgoKSA8IHN0YXRpY19jYXN0PGludD4obV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVk
VmFyaWFibGVDb3VudCgpKSk7CiAgICAgICAgIGlmICghKGl0LT5zZWNvbmQuZ2V0QXR0cmlidXRl
cygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQog
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+Zmlyc3Qu
Z2V0KCkpKTsKICAgICB9CkBAIC0xMTcsNyArMTIyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0
aW9uOjpzeW1ib2xUYWJsZVB1dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFi
bGVFbnRyeSYgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwo
KSk7Ci0gICAgaWYgKGVudHJ5LmdldEluZGV4KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihkKCktPmZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpKQorICAgIGlmIChlbnRy
eS5nZXRJbmRleCgpID49IHN0YXRpY19jYXN0PGludD4obV9mdW5jdGlvbkV4ZWN1dGFibGUtPmNh
cHR1cmVkVmFyaWFibGVDb3VudCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGVudHJ5
LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgcmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRl
eCgpKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwpAQCAtMTk2LDE1ICsyMDEsMTUgQEAg
SlNWYWx1ZSBKU0FjdGl2YXRpb246OnRvU3RyaWN0VGhpc09iamVjdAogICAgIAogYm9vbCBKU0Fj
dGl2YXRpb246OmlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29u
c3QKIHsKLSAgICByZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBkKCktPmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+dXNlc0V2YWwoKTsKKyAgICByZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBtX2Z1bmN0aW9uRXhl
Y3V0YWJsZS0+dXNlc0V2YWwoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEpTVmFsdWUgSlNB
Y3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNB
Y3RpdmF0aW9uKHNsb3RCYXNlKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFt
ZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPihhY3RpdmF0aW9uLT5kKCktPnJl
Z2lzdGVycykpOwotICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9IGFjdGl2YXRpb24tPmQoKS0+
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZSgpLmFyZ3VtZW50c1JlZ2lzdGVy
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PFJlZ2lzdGVyKj4oYWN0aXZhdGlvbi0+bV9yZWdpc3RlcnMpKTsKKyAgICBpbnQg
YXJndW1lbnRzUmVnaXN0ZXIgPSBhY3RpdmF0aW9uLT5tX2Z1bmN0aW9uRXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGUoKS5hcmd1bWVudHNSZWdpc3RlcigpOwogICAgIGlmIChKU1ZhbHVlIGFy
Z3VtZW50cyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVudHNSZWdpc3RlcikuanNWYWx1
ZSgpKQogICAgICAgICByZXR1cm4gYXJndW1lbnRzOwogICAgIGludCByZWFsQXJndW1lbnRzUmVn
aXN0ZXIgPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJl
dmlzaW9uIDgwNzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDIzICs3Miw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzTWFya0No
aWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0
cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RydWN0IEpTQWN0aXZhdGlv
bkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEgewotICAgICAgICAgICAgSlNBY3Rp
dmF0aW9uRGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQWN0aXZhdGlvbiogYWN0aXZh
dGlvbiwgRnVuY3Rpb25FeGVjdXRhYmxlKiBfZnVuY3Rpb25FeGVjdXRhYmxlLCBSZWdpc3Rlciog
cmVnaXN0ZXJzKQotICAgICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdERhdGEoX2Z1bmN0
aW9uRXhlY3V0YWJsZS0+c3ltYm9sVGFibGUoKSwgcmVnaXN0ZXJzKQotICAgICAgICAgICAgICAg
ICwgZnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERhdGEsIGFjdGl2YXRpb24sIF9mdW5jdGlvbkV4
ZWN1dGFibGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBt
YW51YWxseSByZWYgYW5kIGRlcmVmIHRoZSBzeW1ib2wgdGFibGUgYXMgSlNWYXJpYWJsZU9iamVj
dERhdGEKLSAgICAgICAgICAgICAgICAvLyBkb2Vzbid0IGtub3cgYWJvdXQgU2hhcmVkU3ltYm9s
VGFibGUKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCkt
PnJlZigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfkpTQWN0aXZhdGlvbkRhdGEoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZFN5bWJvbFRh
YmxlKj4oc3ltYm9sVGFibGUpLT5kZXJlZigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbkV4ZWN1dGFibGU7Ci0g
ICAgICAgIH07Ci0KICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFi
bGUpOwpAQCAtOTgsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpT
VmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdl
dEFyZ3VtZW50c0dldHRlcigpOwogCi0gICAgICAgIEpTQWN0aXZhdGlvbkRhdGEqIGQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb25EYXRhKj4oSlNWYXJpYWJsZU9iamVj
dDo6ZCk7IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV9mdW5j
dGlvbkV4ZWN1dGFibGU7CiAgICAgfTsKIAogICAgIEpTQWN0aXZhdGlvbiogYXNBY3RpdmF0aW9u
KEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDgwNzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMiw4ICs0MTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
CiAgICAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNwYWNlOjpzaXplQ2xh
c3NGb3Ioc2l6ZV90IGJ5dGVzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5dGVz
IDw9IHByZWNpc2VDdXRvZmYpOwotICAgICAgICByZXR1cm4gbV9wcmVjaXNlU2l6ZUNsYXNzZXNb
KGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CisgICAgICAgIEFTU0VSVChieXRlcyAmJiBieXRl
cyA8IG1heENlbGxTaXplKTsKKyAgICAgICAgaWYgKGJ5dGVzIDwgcHJlY2lzZUN1dG9mZikKKyAg
ICAgICAgICAgIHJldHVybiBtX3ByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIHByZWNp
c2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbKGJ5dGVzIC0g
MSkgLyBpbXByZWNpc2VTdGVwXTsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCogTWFya2VkU3Bh
Y2U6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDgwNzM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NCwxNSArOTQsMTMgQEAgSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgp
CiB7CiAgICAgQVNTRVJUKEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CiAK
LSAgICBpZiAoZCgpLT5kZWJ1Z2dlcikKLSAgICAgICAgZCgpLT5kZWJ1Z2dlci0+ZGV0YWNoKHRo
aXMpOworICAgIGlmIChtX2RlYnVnZ2VyKQorICAgICAgICBtX2RlYnVnZ2VyLT5kZXRhY2godGhp
cyk7CiAKICAgICBQcm9maWxlcioqIHByb2ZpbGVyID0gUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZSgpOwogICAgIGlmIChVTkxJS0VMWSgqcHJvZmlsZXIgIT0gMCkpIHsKICAgICAg
ICAgKCpwcm9maWxlciktPnN0b3BQcm9maWxpbmcoZ2xvYmFsRXhlYygpLCBVU3RyaW5nKCkpOwog
ICAgIH0KLQotICAgIGQoKS0+ZGVzdHJ1Y3RvcihkKCkpOwogfQogCiB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpCkBAIC0xMTEsMTQgKzEwOSwxNCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzCiAgICAgCiAgICAgc3RydWN0dXJl
KCktPmRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKTsKIAotICAgIGQoKS0+Z2xvYmFs
RGF0YSA9IEhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsKLSAgICBkKCktPmdsb2JhbFNj
b3BlQ2hhaW4uc2V0KCpkKCktPmdsb2JhbERhdGEsIHRoaXMsIG5ldyAoZCgpLT5nbG9iYWxEYXRh
LmdldCgpKSBTY29wZUNoYWluTm9kZSgwLCB0aGlzLCBkKCktPmdsb2JhbERhdGEuZ2V0KCksIHRo
aXMsIHRoaXNWYWx1ZSkpOworICAgIG1fZ2xvYmFsRGF0YSA9IEhlYXA6OmhlYXAodGhpcyktPmds
b2JhbERhdGEoKTsKKyAgICBtX2dsb2JhbFNjb3BlQ2hhaW4uc2V0KCptX2dsb2JhbERhdGEsIHRo
aXMsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBTY29wZUNoYWluTm9kZSgwLCB0aGlzLCBtX2ds
b2JhbERhdGEuZ2V0KCksIHRoaXMsIHRoaXNWYWx1ZSkpOwogCi0gICAgSlNHbG9iYWxPYmplY3Q6
Omdsb2JhbEV4ZWMoKS0+aW5pdCgwLCAwLCBkKCktPmdsb2JhbFNjb3BlQ2hhaW4uZ2V0KCksIENh
bGxGcmFtZTo6bm9DYWxsZXIoKSwgMCwgMCk7CisgICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4
ZWMoKS0+aW5pdCgwLCAwLCBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCksIENhbGxGcmFtZTo6bm9D
YWxsZXIoKSwgMCwgMCk7CiAKLSAgICBkKCktPmRlYnVnZ2VyID0gMDsKKyAgICBtX2RlYnVnZ2Vy
ID0gMDsKIAotICAgIGQoKS0+cHJvZmlsZUdyb3VwID0gMDsKKyAgICBtX3Byb2ZpbGVHcm91cCA9
IDA7CiAKICAgICByZXNldChwcm90b3R5cGUoKSk7CiB9CkBAIC0xNzcsODAgKzE3NSw4MCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAKICAgICAvLyBQcm90b3R5
cGVzCiAKLSAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Q
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsgLy8gVGhlIHJlYWwgcHJvdG90
eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCi0gICAgZCgp
LT5mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKSk7IC8vIFRoZSByZWFsIHBy
b3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgorICAg
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgSlNGdW5jdGlvbiog
YXBwbHlGdW5jdGlvbiA9IDA7Ci0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+YWRkRnVuY3Rp
b25Qcm9wZXJ0aWVzKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksICZj
YWxsRnVuY3Rpb24sICZhcHBseUZ1bmN0aW9uKTsKLSAgICBkKCktPmNhbGxGdW5jdGlvbi5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwotICAgIGQoKS0+YXBwbHlG
dW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKLSAg
ICBkKCktPm9iamVjdFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShqc051bGwoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAg
ICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91
dFRyYW5zaXRpb24oZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Q
cm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CisgICAgbV9jYWxs
RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAg
ICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5j
dGlvbik7CisgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgbmV3IChleGVjKSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7
CisgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhv
dXRUcmFuc2l0aW9uKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+ZW1wdHlP
YmplY3RTdHJ1Y3R1cmUgPSBkKCktPm9iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoKTsKKyAg
ICBtX2VtcHR5T2JqZWN0U3RydWN0dXJlID0gbV9vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklE
KCk7CiAKLSAgICBkKCktPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAg
ICBkKCktPmFyZ3VtZW50c1N0cnVjdHVyZSA9IEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCktPmNhbGxiYWNrQ29uc3RydWN0b3JT
dHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9i
amVjdFByb3RvdHlwZS5nZXQoKSk7Ci0gICAgZCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9
IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrRnVuY3Rpb25T
dHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZSA9IEFyZ3VtZW50czo6
Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2NhbGxiYWNr
Q29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9jYWxsYmFja09iamVjdFN0cnVj
dHVyZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRl
U3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+YXJyYXlQcm90
b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBBcnJheVByb3Rv
dHlwZSh0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOwotICAgIGQoKS0+YXJyYXlTdHJ1Y3R1cmUgPSBKU0FycmF5OjpjcmVh
dGVTdHJ1Y3R1cmUoZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSk7Ci0gICAgZCgpLT5yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUgPSBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPmFycmF5UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2FycmF5UHJvdG90eXBlLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgQXJyYXlQcm90b3R5cGUodGhpcywg
QXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKKyAgICBtX2FycmF5U3RydWN0dXJlID0gSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKG1fYXJy
YXlQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlID0g
UmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUobV9hcnJheVByb3RvdHlwZS5nZXQo
KSk7CiAKLSAgICBkKCktPnN0cmluZ1Byb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBuZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKLSAgICBk
KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+c3RyaW5nUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX3N0cmluZ1Byb3RvdHlwZS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVj
LCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpKTsKKyAgICBtX3N0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+Ym9v
bGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJv
b2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKSkpOwotICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fYm9v
bGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJv
b2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShtX2Jvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5udW1iZXJQcm90
b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90
b3R5cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5v
YmplY3RQcm90b3R5cGUuZ2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7Ci0g
ICAgZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPm51bWJlclByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9udW1iZXJQcm90b3R5cGUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5cGUo
ZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUobV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAgbV9udW1iZXJP
YmplY3RTdHJ1Y3R1cmUgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShtX251bWJlclBy
b3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPmRhdGVQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHRoaXMsIERhdGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsK
LSAgICBkKCktPmRhdGVTdHJ1Y3R1cmUgPSBEYXRlSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShk
KCktPmRhdGVQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZGF0ZVByb3RvdHlwZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIERhdGVQcm90b3R5cGUoZXhlYywgdGhpcywg
RGF0ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkp
OworICAgIG1fZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKG1f
ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0
aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBkKCktPnJlZ0V4
cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJv
dG90eXBlLmdldCgpKTsKKyAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBSZWdFeHBQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBtX3JlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQo
KS0+bWV0aG9kQ2FsbER1bW15LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpKTsKKyAgICBtX21ldGhvZENhbGxEdW1teS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBFcnJv
clByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVycm9yUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90
b3R5cGUuZ2V0KCkpLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBkKCktPmVy
cm9yU3RydWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGVycm9yUHJvdG90
eXBlKTsKKyAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEVy
cm9yUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKKyAg
ICBtX2Vycm9yU3RydWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGVycm9y
UHJvdG90eXBlKTsKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RD
b25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgdGhpcywgT2Jq
ZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogZnVuY3Rpb25D
b25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgRnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCB0aGlzLCBG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogYXJy
YXlDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQXJyYXlDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0KCksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpOwotICAgIEpTQ2VsbCogc3RyaW5nQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIFN0cmlu
Z0NvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFN0cmluZ0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCksIGQoKS0+c3RyaW5nUHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0NlbGwqIGJvb2xlYW5D
b25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEJv
b2xlYW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogbnVtYmVy
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE51
bWJlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIGQoKS0+bnVtYmVyUHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0NlbGwqIGRhdGVDb25z
dHJ1Y3RvciA9IG5ldyAoZXhlYykgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIERhdGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBk
KCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCktPmRhdGVQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0Nl
bGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3Io
ZXhlYywgdGhpcywgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0Nl
bGwqIGFycmF5Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywg
dGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpKTsKKyAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVjKSBTdHJpbmdD
b25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBt
X3N0cmluZ1Byb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBib29sZWFuQ29uc3RydWN0b3Ig
PSBuZXcgKGV4ZWMpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCB0aGlzLCBCb29sZWFuQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9ib29s
ZWFuUHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0NlbGwqIG51bWJlckNvbnN0cnVjdG9yID0gbmV3
IChleGVjKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBOdW1iZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX251bWJlclByb3Rv
dHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIERh
dGVDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwg
bV9kYXRlUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+cmVnRXhwQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPnJlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
cmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVj
KSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKSkpOwogCi0gICAgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIG5ldyAoZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IGVycm9yUHJvdG90eXBlKSk7CisgICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUobV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIGVycm9yUHJvdG90eXBlKSk7CiAKICAgICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXJyb3JQcm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9yU3Ry
dWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIpKTsKLSAgICBkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rv
ci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJv
dG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpKTsKLSAgICBkKCktPnJlZmVyZW5jZUVycm9y
Q29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRp
dmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9yIikpOwotICAgIGQoKS0+
c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiU3ludGF4RXJyb3IiKSk7Ci0g
ICAgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIikp
OwotICAgIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVVJJRXJyb3Ii
KSk7Ci0KLSAgICBkKCktPm9iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0
cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQo
KS0+Ym9vbGVhblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgYm9v
bGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5zdHJpbmdQcm90b3R5cGUtPnB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51
bSk7Ci0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIG51bWJlckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5kYXRlUHJvdG90
eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkYXRlQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKLSAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAg
IGVycm9yUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPmVy
cm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiBu
YXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2V2YWxFcnJvckNvbnN0cnVj
dG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7CisgICAgbV9yYW5nZUVycm9yQ29uc3Ry
dWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CisgICAgbV9yZWZlcmVuY2VFcnJv
ckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0
aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKKyAgICBtX3N5
bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChl
eGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOworICAg
IG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKKyAg
ICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOworCisg
ICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9i
amVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVu
dW0pOworICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2Jvb2xlYW5Qcm90b3R5cGUt
PnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOworICAgIG1fc3RyaW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fbnVtYmVyUHJvdG90
eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBudW1iZXJDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOworICAgIG1fZGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9yZWdFeHBQcm90b3R5
cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1fcmVnRXhwQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKKyAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAKICAg
ICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9ycwogCkBAIC0yNjMsNDIgKzI2MSw0MiBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
IlN0cmluZyIpLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJOdW1iZXIiKSwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCAiUmVnRXhwIiksIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXJyb3IiKSwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdl
dCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBkKCktPmV2
YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
IlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVmZXJlbmNlRXJyb3IiKSwgZCgpLT5yZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5
bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBk
KCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiUmVnRXhwIiksIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihleGVjLCAiRXJyb3IiKSwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBtX2V2YWxFcnJvckNvbnN0
cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJhbmdlRXJyb3Ii
KSwgbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCAiUmVmZXJlbmNlRXJyb3IiKSwgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdl
dCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIG1fc3lu
dGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJUeXBlRXJyb3IiKSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0
KCksIERvbnRFbnVtKTsKIAogICAgIC8vIFNldCBnbG9iYWwgdmFsdWVzLgogICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byhJZGVudGlmaWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0
aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KElkZW50aWZpZXIoZXhlYywgIk1hdGgiKSwgbmV3IChleGVjKSBNYXRoT2JqZWN0KGV4ZWMsIHRo
aXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
LCBEb250RW51bSB8IERvbnREZWxldGUpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRl
bnRpZmllcihleGVjLCAiTmFOIiksIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIklu
ZmluaXR5IiksIGpzTnVtYmVyKEluZiksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgInVuZGVmaW5l
ZCIpLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAo
ZXhlYykgSlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpT
T05PYmplY3QodGhpcywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwogCiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKIAogICAgIC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgogCi0gICAgZCgpLT5ldmFsRnVuY3Rp
b24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4
ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgZCgpLT5ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAyLCBJ
ZGVudGlmaWVyKGV4ZWMsICJwYXJzZUludCIpLCBnbG9iYWxGdW5jUGFyc2VJbnQpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwg
MSwgSWRlbnRpZmllcihleGVjLCAicGFyc2VGbG9hdCIpLCBnbG9iYWxGdW5jUGFyc2VGbG9hdCks
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4pLCBE
b250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNGaW5pdGUiKSwgZ2xvYmFsRnVuY0lzRmluaXRl
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImVzY2FwZSIpLCBnbG9iYWxGdW5jRXNjYXBl
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInVuZXNjYXBlIiksIGdsb2JhbEZ1bmNVbmVz
Y2FwZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJkZWNvZGVVUkkiKSwgZ2xvYmFsRnVu
Y0RlY29kZVVSSSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJkZWNvZGVVUklDb21wb25l
bnQiKSwgZ2xvYmFsRnVuY0RlY29kZVVSSUNvbXBvbmVudCksIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlv
bihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVy
KGV4ZWMsICJlbmNvZGVVUkkiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSSksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNG
dW5jdGlvbihleGVjLCB0aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVu
dGlmaWVyKGV4ZWMsICJlbmNvZGVVUklDb21wb25lbnQiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSUNv
bXBvbmVudCksIERvbnRFbnVtKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1
bmNFdmFsKSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBt
X2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1f
ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIsIElkZW50aWZpZXIoZXhlYywgInBhcnNlSW50Iiks
IGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBt
X2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUZsb2F0
IiksIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRo
aXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImlzTmFO
IiksIGdsb2JhbEZ1bmNJc05hTiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBt
X2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc0Zpbml0ZSIp
LCBnbG9iYWxGdW5jSXNGaW5pdGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywg
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiZXNjYXBlIiks
IGdsb2JhbEZ1bmNFc2NhcGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9m
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAidW5lc2NhcGUiKSwg
Z2xvYmFsRnVuY1VuZXNjYXBlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1f
ZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSSIp
LCBnbG9iYWxGdW5jRGVjb2RlVVJJKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMs
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVS
SUNvbXBvbmVudCIpLCBnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50KSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50
aWZpZXIoZXhlYywgImVuY29kZVVSSSIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJKSwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgImVuY29kZVVSSUNvbXBvbmVudCIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJ
Q29tcG9uZW50KSwgRG9udEVudW0pOwogI2lmbmRlZiBOREVCVUcKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0
aGlzLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJq
c2NwcmludCIpLCBnbG9iYWxGdW5jSlNDUHJpbnQpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhl
YywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAi
anNjcHJpbnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwogI2VuZGlmCiAKICAg
ICByZXNldFByb3RvdHlwZShwcm90b3R5cGUpOwpAQCAtMzEwLDcgKzMwOCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTVmEKICAgICBzZXRQcm90b3R5cGUocHJvdG90
eXBlKTsKIAogICAgIEpTT2JqZWN0KiBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiA9IGxhc3RJblBy
b3RvdHlwZUNoYWluKHRoaXMpOwotICAgIEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUgPSBkKCkt
Pm9iamVjdFByb3RvdHlwZS5nZXQoKTsKKyAgICBKU09iamVjdCogb2JqZWN0UHJvdG90eXBlID0g
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7CiAgICAgaWYgKG9sZExhc3RJblByb3RvdHlwZUNoYWlu
ICE9IG9iamVjdFByb3RvdHlwZSkKICAgICAgICAgb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4tPnNl
dFByb3RvdHlwZShvYmplY3RQcm90b3R5cGUpOwogfQpAQCAtMzE5LDY2ICszMTcsNjYgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdAogewogICAgIEpTVmFyaWFibGVP
YmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAgIAotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssICZkKCktPmdsb2JhbFNjb3BlQ2hhaW4pOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX2dsb2JhbFNjb3BlQ2hhaW4pOwogCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJmQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPmVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZk
KCktPmV2YWxFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAm
ZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssICZkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yKTsKLQotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZkKCktPmV2YWxGdW5jdGlvbik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJmQoKS0+Y2FsbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAm
ZCgpLT5hcHBseUZ1bmN0aW9uKTsKLQotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCkt
Pm9iamVjdFByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZnVu
Y3Rpb25Qcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPmFycmF5
UHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5ib29sZWFuUHJv
dG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5zdHJpbmdQcm90b3R5
cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPm51bWJlclByb3RvdHlwZSk7
Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZGF0ZVByb3RvdHlwZSk7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+cmVnRXhwUHJvdG90eXBlKTsKLQotICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPm1ldGhvZENhbGxEdW1teSk7Ci0KLSAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmVycm9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmFyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgZCgpLT5hcnJheVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCBkKCktPmNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5kYXRlU3RydWN0dXJlKTsKLSAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCBkKCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCBkKCktPmVycm9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBkKCktPmZ1bmN0aW9uU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCBkKCktPm51bWJlck9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgZCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBkKCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJm1fcmVnRXhwQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX2Vycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX2V2YWxFcnJvckNvbnN0cnVjdG9yKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAm
bV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZt
X3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAm
bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZt
X2V2YWxGdW5jdGlvbik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbEZ1bmN0
aW9uKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcHBseUZ1bmN0aW9uKTsKKwor
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX29iamVjdFByb3RvdHlwZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZnVuY3Rpb25Qcm90b3R5cGUpOworICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZtX2FycmF5UHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9ib29sZWFuUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCAmbV9zdHJpbmdQcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX251
bWJlclByb3RvdHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZGF0ZVByb3Rv
dHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fcmVnRXhwUHJvdG90eXBlKTsK
KworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX21ldGhvZENhbGxEdW1teSk7CisKKyAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCBtX2FyZ3VtZW50c1N0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgbV9hcnJheVN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgbV9kYXRlU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBt
X2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Vy
cm9yU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Z1bmN0aW9uU3Ry
dWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX251bWJlck9iamVjdFN0cnVj
dHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fcmVnRXhwU3RydWN0dXJl
KTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7
CiAKICAgICAvLyBObyBuZWVkIHRvIG1hcmsgdGhlIG90aGVyIHN0cnVjdHVyZXMsIGJlY2F1c2Ug
dGhlaXIgcHJvdG90eXBlcyBhcmUgYWxsCiAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSByZWZlcmVu
Y2VkIGVsc2V3aGVyZS4KIAotICAgIGlmIChkKCktPnJlZ2lzdGVyQXJyYXkpIHsKKyAgICBpZiAo
bV9yZWdpc3RlckFycmF5KSB7CiAgICAgICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBn
bG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSB0b3JuIG9mZiwKICAgICAgICAgLy8g
d2UgY2FuIG1hcmsgdGhlIHRvcm4tb2ZmIGFycmF5LgotICAgICAgICBtYXJrU3RhY2suYXBwZW5k
VmFsdWVzKGQoKS0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZCgpLT5yZWdpc3RlckFycmF5U2l6ZSk7
Ci0gICAgfSBlbHNlIGlmIChkKCktPnJlZ2lzdGVycykgeworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kVmFsdWVzKG1fcmVnaXN0ZXJBcnJheS5nZXQoKSwgbV9yZWdpc3RlckFycmF5U2l6ZSk7Cisg
ICAgfSBlbHNlIGlmIChtX3JlZ2lzdGVycykgewogICAgICAgICAvLyBEdXJpbmcgZXhlY3V0aW9u
IG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIGluIHRoZSByZWdpc3RlciBm
aWxlLAogICAgICAgICAvLyB0aGUgc3ltYm9sIHRhYmxlIHRlbGxzIHVzIGhvdyBtYW55IHZhcmlh
YmxlcyB0aGVyZSBhcmUsIGFuZCByZWdpc3RlcnMKICAgICAgICAgLy8gcG9pbnRzIHRvIHdoZXJl
IHRoZXkgZW5kLCBhbmQgdGhlIHJlZ2lzdGVycyB1c2VkIGZvciBleGVjdXRpb24gYmVnaW4uCi0g
ICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoZCgpLT5yZWdpc3RlcnMgLSBzeW1ib2xUYWJs
ZSgpLnNpemUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kVmFsdWVzKG1fcmVnaXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCksIHN5bWJvbFRhYmxl
KCkuc2l6ZSgpKTsKICAgICB9CiB9CiAKIEV4ZWNTdGF0ZSogSlNHbG9iYWxPYmplY3Q6Omdsb2Jh
bEV4ZWMoKQogewotICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShkKCktPmdsb2JhbENhbGxG
cmFtZSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAgcmV0dXJuIENh
bGxGcmFtZTo6Y3JlYXRlKG1fZ2xvYmFsQ2FsbEZyYW1lICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUo
Ym9vbCYpIGNvbnN0CkBAIC0zODgsMTIgKzM4NiwxMiBAQCBib29sIEpTR2xvYmFsT2JqZWN0Ojpp
c0R5bmFtaWNTY29wZShib29sCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzRnJv
bShSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSkKIHsKLSAgICBBU1NFUlQoIWQoKS0+cmVnaXN0
ZXJBcnJheSk7Ci0gICAgQVNTRVJUKCFkKCktPnJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICBBU1NF
UlQoIW1fcmVnaXN0ZXJBcnJheSk7CisgICAgQVNTRVJUKCFtX3JlZ2lzdGVyQXJyYXlTaXplKTsK
IAogICAgIGludCBudW1HbG9iYWxzID0gcmVnaXN0ZXJGaWxlLm51bUdsb2JhbHMoKTsKICAgICBp
ZiAoIW51bUdsb2JhbHMpIHsKLSAgICAgICAgZCgpLT5yZWdpc3RlcnMgPSAwOworICAgICAgICBt
X3JlZ2lzdGVycyA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxMSw5ICs0MDks
OSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpjb3B5R2xvYmFsc1RvKFJlZ2lzCiAgICAgcmVnaXN0
ZXJGaWxlLnNldEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICByZWdpc3RlckZpbGUuc2V0TnVtR2xv
YmFscyhzeW1ib2xUYWJsZSgpLnNpemUoKSk7CiAKLSAgICBpZiAoZCgpLT5yZWdpc3RlckFycmF5
KSB7CisgICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBUaGUgcmVnaXN0ZXIg
ZmlsZSBpcyBhbHdheXMgYSBnYyByb290IHNvIG5vIGJhcnJpZXIgaXMgbmVlZGVkIGhlcmUKLSAg
ICAgICAgbWVtY3B5KHJlZ2lzdGVyRmlsZS5zdGFydCgpIC0gZCgpLT5yZWdpc3RlckFycmF5U2l6
ZSwgZCgpLT5yZWdpc3RlckFycmF5LmdldCgpLCBkKCktPnJlZ2lzdGVyQXJyYXlTaXplICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOworICAgICAgICBtZW1jcHkocmVnaXN0ZXJGaWxl
LnN0YXJ0KCkgLSBtX3JlZ2lzdGVyQXJyYXlTaXplLCBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIG1f
cmVnaXN0ZXJBcnJheVNpemUgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSk7CiAgICAg
ICAgIHNldFJlZ2lzdGVycyhyZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+
KHJlZ2lzdGVyRmlsZS5zdGFydCgpKSwgbnVsbHB0ciwgMCk7CiAgICAgfQogfQpAQCAtNDI0LDEx
ICs0MjIsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzaXplUmVnaXN0ZXJzKGludAogICAg
IGlmIChuZXdTaXplID09IG9sZFNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobmV3
U2l6ZSAmJiBuZXdTaXplID4gb2xkU2l6ZSk7Ci0gICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSB8
fCAhZCgpLT5yZWdpc3RlcnMpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4o
b2xkU2l6ZSkgPT0gZCgpLT5yZWdpc3RlckFycmF5U2l6ZSk7CisgICAgaWYgKG1fcmVnaXN0ZXJB
cnJheSB8fCAhbV9yZWdpc3RlcnMpIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4ob2xkU2l6ZSkgPT0gbV9yZWdpc3RlckFycmF5U2l6ZSk7CiAgICAgICAgIE93bkFycmF5UHRy
PFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5l
dyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbmV3U2l6ZV0pOwogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG9sZFNpemU7IGkrKykKLSAgICAgICAgICAgIHJlZ2lzdGVyQXJyYXlbbmV3U2l6ZSAt
IG9sZFNpemUgKyBpXS5zZXQoZ2xvYmFsRGF0YSgpLCB0aGlzLCBkKCktPnJlZ2lzdGVyQXJyYXlb
aV0uZ2V0KCkpOworICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtuZXdTaXplIC0gb2xkU2l6ZSAr
IGldLnNldChnbG9iYWxEYXRhKCksIHRoaXMsIG1fcmVnaXN0ZXJBcnJheVtpXS5nZXQoKSk7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5n
ZXQoKSArIG5ld1NpemU7CiAgICAgICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVy
QXJyYXkucmVsZWFzZSgpLCBuZXdTaXplKTsKICAgICB9IGVsc2UgewpAQCAtNDM3LDcgKzQzNSw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2l6ZVJlZ2lzdGVycyhpbnQKICAgICB9CiAKICAg
ICBmb3IgKGludCBpID0gLW5ld1NpemU7IGkgPCAtb2xkU2l6ZTsgKytpKQotICAgICAgICBkKCkt
PnJlZ2lzdGVyc1tpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgbV9yZWdpc3RlcnNbaV0uc2V0
VW5kZWZpbmVkKCk7CiB9CiAKIHZvaWQqIEpTR2xvYmFsT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6
ZV90IHNpemUsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTQ0NSwxMSArNDQzLDYgQEAg
dm9pZCogSlNHbG9iYWxPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplXwogICAgIHJldHVybiBnbG9i
YWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNpemUpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpk
ZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqIGpzR2xvYmFsT2JqZWN0RGF0YSkKLXsKLSAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3REYXRhKj4oanNHbG9iYWxPYmplY3RE
YXRhKTsKLX0KLQogRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlOjpEeW5hbWljR2xvYmFsT2JqZWN0
U2NvcGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFs
T2JqZWN0KQogICAgIDogbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KQogICAgICwgbV9zYXZlZER5bmFtaWNHbG9iYWxP
YmplY3QobV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gODA3MzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw5MiArNTQsNzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgcHJvdGVjdGVk
OgotICAgICAgICB1c2luZyBKU1ZhcmlhYmxlT2JqZWN0OjpKU1ZhcmlhYmxlT2JqZWN0RGF0YTsK
ICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+ID4g
V2Vha01hcFNldDsKIAotICAgICAgICBzdHJ1Y3QgSlNHbG9iYWxPYmplY3REYXRhIDogcHVibGlj
IEpTVmFyaWFibGVPYmplY3REYXRhIHsKLSAgICAgICAgICAgIC8vIFdlIHVzZSBhbiBleHBsaWNp
dCBkZXN0cnVjdG9yIGZ1bmN0aW9uIHBvaW50ZXIgaW5zdGVhZCBvZiBhCi0gICAgICAgICAgICAv
LyB2aXJ0dWFsIGRlc3RydWN0b3IgYmVjYXVzZSB3ZSB3YW50IHRvIGF2b2lkIGFkZGluZyBhIHZ0
YWJsZQotICAgICAgICAgICAgLy8gcG9pbnRlciB0byB0aGlzIHN0cnVjdC4gQWRkaW5nIGEgdnRh
YmxlIHBvaW50ZXIgd291bGQgZm9yY2UgdGhlCi0gICAgICAgICAgICAvLyBjb21waWxlciB0byBl
bWl0IGNvc3RseSBwb2ludGVyIGZpeHVwIGNvZGUgd2hlbiBjYXN0aW5nIGZyb20KLSAgICAgICAg
ICAgIC8vIEpTVmFyaWFibGVPYmplY3REYXRhKiB0byBKU0dsb2JhbE9iamVjdERhdGEqLgotICAg
ICAgICAgICAgdHlwZWRlZiB2b2lkICgqRGVzdHJ1Y3Rvcikodm9pZCopOwotCi0gICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdERhdGEoRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQotICAgICAgICAgICAg
ICAgIDogSlNWYXJpYWJsZU9iamVjdERhdGEoJnN5bWJvbFRhYmxlLCAwKQotICAgICAgICAgICAg
ICAgICwgZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKQotICAgICAgICAgICAgICAgICwgcmVnaXN0ZXJB
cnJheVNpemUoMCkKLSAgICAgICAgICAgICAgICAsIGdsb2JhbFNjb3BlQ2hhaW4oKQotICAgICAg
ICAgICAgICAgICwgd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVy
KCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIERlc3Ry
dWN0b3IgZGVzdHJ1Y3RvcjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc2l6ZV90IHJlZ2lz
dGVyQXJyYXlTaXplOwotCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogbmV4dDsKLSAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBwcmV2OwotCi0gICAgICAgICAgICBEZWJ1Z2dlciogZGVi
dWdnZXI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxTY29wZUNoYWlu
Tm9kZT4gZ2xvYmFsU2NvcGVDaGFpbjsKLSAgICAgICAgICAgIFJlZ2lzdGVyIGdsb2JhbENhbGxG
cmFtZVtSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemVdOwotCi0gICAgICAgICAgICBX
cml0ZUJhcnJpZXI8UmVnRXhwQ29uc3RydWN0b3I+IHJlZ0V4cENvbnN0cnVjdG9yOwotICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPEVycm9yQ29uc3RydWN0b3I+IGVycm9yQ29uc3RydWN0b3I7Ci0g
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gZXZhbEVycm9y
Q29uc3RydWN0b3I7Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcj4gcmFuZ2VFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I+IHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3I7Ci0gICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gc3ludGF4RXJyb3JDb25z
dHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
PiB0eXBlRXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPiBVUklFcnJvckNvbnN0cnVjdG9yOwotCi0gICAgICAgICAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gZXZhbEZ1bmN0aW9uOwotICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IGNhbGxGdW5jdGlvbjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBhcHBseUZ1bmN0aW9uOwotCi0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8T2Jq
ZWN0UHJvdG90eXBlPiBvYmplY3RQcm90b3R5cGU7Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Qcm90b3R5cGU+IGZ1bmN0aW9uUHJvdG90eXBlOwotICAgICAgICAgICAgV3JpdGVC
YXJyaWVyPEFycmF5UHJvdG90eXBlPiBhcnJheVByb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRl
QmFycmllcjxCb29sZWFuUHJvdG90eXBlPiBib29sZWFuUHJvdG90eXBlOwotICAgICAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cmluZ1Byb3RvdHlwZT4gc3RyaW5nUHJvdG90eXBlOwotICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPE51bWJlclByb3RvdHlwZT4gbnVtYmVyUHJvdG90eXBlOwotICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPERhdGVQcm90b3R5cGU+IGRhdGVQcm90b3R5cGU7Ci0gICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiByZWdFeHBQcm90b3R5cGU7Ci0KLSAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbWV0aG9kQ2FsbER1bW15OwotCi0gICAg
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBhcmd1bWVudHNTdHJ1Y3R1cmU7Ci0gICAgICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBhcnJheVN0cnVjdHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOwotICAgICAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwotICAgICAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gZGF0ZVN0cnVjdHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IGVtcHR5T2JqZWN0U3RydWN0dXJlOwotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZXJy
b3JTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBmdW5jdGlvblN0cnVj
dHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG51bWJlck9iamVjdFN0cnVjdHVy
ZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZTsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKLSAg
ICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmluZ09iamVjdFN0cnVjdHVyZTsKLSAgICAg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAg
ICAgIHNpemVfdCBtX3JlZ2lzdGVyQXJyYXlTaXplOwogCi0gICAgICAgICAgICBTeW1ib2xUYWJs
ZSBzeW1ib2xUYWJsZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHByb2ZpbGVHcm91cDsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIG1fbmV4dDsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fcHJl
djsKIAotICAgICAgICAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFsRGF0YTsKKyAgICAg
ICAgRGVidWdnZXIqIG1fZGVidWdnZXI7CisgICAgICAgIAorICAgICAgICBXcml0ZUJhcnJpZXI8
U2NvcGVDaGFpbk5vZGU+IG1fZ2xvYmFsU2NvcGVDaGFpbjsKKyAgICAgICAgUmVnaXN0ZXIgbV9n
bG9iYWxDYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplXTsKIAotICAg
ICAgICAgICAgV2Vha01hcFNldCB3ZWFrTWFwczsKLSAgICAgICAgICAgIFdlYWtSYW5kb20gd2Vh
a1JhbmRvbTsKLSAgICAgICAgfTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cENvbnN0cnVj
dG9yPiBtX3JlZ0V4cENvbnN0cnVjdG9yOworICAgICAgICBXcml0ZUJhcnJpZXI8RXJyb3JDb25z
dHJ1Y3Rvcj4gbV9lcnJvckNvbnN0cnVjdG9yOworICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcj4gbV9ldmFsRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yOwor
ICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9yZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yOworICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOworICAgICAgICBXcml0ZUJhcnJpZXI8TmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsK
KworICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CisgICAg
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKKworICAgICAgICBXcml0ZUJh
cnJpZXI8T2JqZWN0UHJvdG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOworICAgICAgICBX
cml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CisgICAgICAgIFdy
aXRlQmFycmllcjxCb29sZWFuUHJvdG90eXBlPiBtX2Jvb2xlYW5Qcm90b3R5cGU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJpbmdQcm90b3R5cGU+IG1fc3RyaW5nUHJvdG90eXBlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8TnVtYmVyUHJvdG90eXBlPiBtX251bWJlclByb3RvdHlwZTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPERhdGVQcm90b3R5cGU+IG1fZGF0ZVByb3RvdHlwZTsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CisKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX21ldGhvZENhbGxEdW1teTsKKworICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiBtX2FyZ3VtZW50c1N0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9i
b29sZWFuT2JqZWN0U3RydWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhbGxi
YWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9kYXRlU3Ry
dWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2VtcHR5T2JqZWN0U3RydWN0dXJl
OworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOworICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3N0cmlu
Z09iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1
bmN0aW9uU3RydWN0dXJlOworCisgICAgICAgIFN5bWJvbFRhYmxlIG1fc3ltYm9sVGFibGU7Cisg
ICAgICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3VwOworCisgICAgICAgIFJlZlB0cjxKU0dsb2Jh
bERhdGE+IG1fZ2xvYmFsRGF0YTsKKworICAgICAgICBXZWFrTWFwU2V0IG1fd2Vha01hcHM7Cisg
ICAgICAgIFdlYWtSYW5kb20gbV93ZWFrUmFuZG9tOwogCiAgICAgcHVibGljOgogICAgICAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKICAgICAgICAgCiAgICAg
ICAgIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KCkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9i
amVjdChKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgbmV3IEpTR2xv
YmFsT2JqZWN0RGF0YShkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKSkKKyAgICAgICAgICAgIDog
SlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgp
KSwgJm1fc3ltYm9sVGFibGUsIDApCisgICAgICAgICAgICAsIG1fcmVnaXN0ZXJBcnJheVNpemUo
MCkKKyAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKKyAgICAgICAgICAgICwgbV93
ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmplY3Q6OkFub255bW91c1Nsb3RDb3VudCA9
PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3NpbmdsZV9zbG90KTsKICAgICAgICAgICAg
IHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOwpAQCAtMTQ3LDcgKzEyOSwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNHbG9iYWxP
YmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgICAgICAg
ICA6IEpTVmFyaWFibGVPYmplY3Qoc3RydWN0dXJlLCBuZXcgSlNHbG9iYWxPYmplY3REYXRhKGRl
c3Ryb3lKU0dsb2JhbE9iamVjdERhdGEpKQorICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0
KHN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIDApCisgICAgICAgICAgICAsIG1fcmVnaXN0ZXJB
cnJheVNpemUoMCkKKyAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAq
IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKICAgICAgICAg
ewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmplY3Q6OkFub255bW91c1Ns
b3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3NpbmdsZV9zbG90KTsKICAg
ICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOwpAQCAtMTU1LDggKzE0MCwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBK
U0dsb2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNH
bG9iYWxPYmplY3REYXRhKiBkYXRhLCBKU09iamVjdCogdGhpc1ZhbHVlKQotICAgICAgICAgICAg
OiBKU1ZhcmlhYmxlT2JqZWN0KHN0cnVjdHVyZSwgZGF0YSkKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0aGlz
VmFsdWUpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3Qoc3RydWN0dXJlLCAmbV9zeW1i
b2xUYWJsZSwgMCkKKyAgICAgICAgICAgICwgbV9yZWdpc3RlckFycmF5U2l6ZSgwKQorICAgICAg
ICAgICAgLCBtX2dsb2JhbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICAgLCBtX3dlYWtSYW5kb20o
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ID09IDEsIEpTR2xv
YmFsT2JqZWN0X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwogICAgICAgICAgICAgcHV0VGhpc1Rv
QW5vbnltb3VzVmFsdWUoMCk7CkBAIC0xODQsNTUgKzE3Miw1NyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhY2Nlc3NvcnMgcmV0dXJuIHByaXN0aW5lIHZhbHVl
cywgZXZlbiBpZiBhIHNjcmlwdCAKICAgICAgICAgLy8gcmVwbGFjZXMgdGhlIGdsb2JhbCBvYmpl
Y3QncyBhc3NvY2lhdGVkIHByb3BlcnR5LgogCi0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBy
ZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwQ29uc3RydWN0b3Iu
Z2V0KCk7IH0KKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCi0gICAgICAgIEVy
cm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPmVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
ZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxFcnJvckNvbnN0
cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJy
b3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9y
LmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0K
LSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotCi0gICAgICAg
IEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0
aW9uLmdldCgpOyB9Ci0KLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBG
dW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCkt
PmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIEFycmF5UHJvdG90eXBlKiBhcnJh
eVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0K
LSAgICAgICAgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBTdHJpbmdQcm90b3R5
cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nUHJvdG90eXBl
LmdldCgpOyB9Ci0gICAgICAgIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgRGF0ZVBy
b3RvdHlwZSogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0ZVByb3RvdHlw
ZS5nZXQoKTsgfQotICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpOyB9Ci0KLSAgICAgICAgSlNP
YmplY3QqIG1ldGhvZENhbGxEdW1teSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bWV0aG9kQ2FsbER1
bW15LmdldCgpOyB9Ci0KLSAgICAgICAgU3RydWN0dXJlKiBhcmd1bWVudHNTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBkKCktPmFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBT
dHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5hcnJheVN0cnVj
dHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBkKCktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAg
ICAgICAgU3RydWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT5jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAg
IFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQo
KS0+Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUq
IGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5jYWxsYmFja09i
amVjdFN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBkKCktPmRhdGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3Ry
dWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZW1wdHlP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPm51bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQotICAgICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBkKCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAg
U3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBk
KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwU3RydWN0dXJl
LmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAg
RXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBl
dmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7
IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsg
fQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9V
UklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisKKyAgICAgICAgSlNGdW5jdGlvbiogZXZhbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICAgICAg
SlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24u
Z2V0KCk7IH0KKyAgICAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQorCisgICAgICAgIE9iamVjdFByb3RvdHlwZSog
b2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7
IH0KKyAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgICAgICBBcnJheVByb3Rv
dHlwZSogYXJyYXlQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG90eXBlLmdl
dCgpOyB9CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX2Jvb2xlYW5Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgU3RyaW5nUHJv
dG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1Byb3RvdHlw
ZS5nZXQoKTsgfQorICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIERhdGVQcm90
b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0
KCk7IH0KKyAgICAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQorCisgICAgICAgIEpTT2JqZWN0KiBt
ZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZENhbGxEdW1teS5nZXQoKTsg
fQorCisgICAgICAgIFN0cnVjdHVyZSogYXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9hcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBhcnJh
eVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAg
ICAgICAgU3RydWN0dXJlKiBib29sZWFuT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogY2Fs
bGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tDb25z
dHJ1Y3RvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAg
ICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0
dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0
cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJl
LmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSog
bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CisgICAgICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAg
U3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVj
dHVyZS5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAKLSAgICAg
ICAgdm9pZCBzZXRQcm9maWxlR3JvdXAodW5zaWduZWQgdmFsdWUpIHsgZCgpLT5wcm9maWxlR3Jv
dXAgPSB2YWx1ZTsgfQotICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXAoKSBjb25zdCB7IHJl
dHVybiBkKCktPnByb2ZpbGVHcm91cDsgfQorICAgICAgICB2b2lkIHNldFByb2ZpbGVHcm91cCh1
bnNpZ25lZCB2YWx1ZSkgeyBtX3Byb2ZpbGVHcm91cCA9IHZhbHVlOyB9CisgICAgICAgIHVuc2ln
bmVkIHByb2ZpbGVHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZUdyb3VwOyB9CiAKLSAg
ICAgICAgRGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gZCgpLT5kZWJ1Z2dlcjsg
fQotICAgICAgICB2b2lkIHNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikgeyBkKCktPmRl
YnVnZ2VyID0gZGVidWdnZXI7IH0KKyAgICAgICAgRGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQorICAgICAgICB2b2lkIHNldERlYnVnZ2VyKERlYnVnZ2Vy
KiBkZWJ1Z2dlcikgeyBtX2RlYnVnZ2VyID0gZGVidWdnZXI7IH0KIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgICAgICBTY29wZUNoYWluTm9kZSogZ2xvYmFsU2NvcGVDaGFpbigpIHsgcmV0
dXJuIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbi5nZXQoKTsgfQorICAgICAgICBTY29wZUNoYWluTm9k
ZSogZ2xvYmFsU2NvcGVDaGFpbigpIHsgcmV0dXJuIG1fZ2xvYmFsU2NvcGVDaGFpbi5nZXQoKTsg
fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIApAQCAtMjUwLDggKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgcmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpOwogCi0gICAgICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuICpkKCktPmdsb2JhbERhdGEuZ2V0
KCk7IH0KLSAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNHbG9iYWxPYmplY3REYXRhKj4oSlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KKyAg
ICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFs
RGF0YS5nZXQoKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CkBAIC0yNjAsMTUgKzI0
OSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHJlZ2lzdGVyV2Vha01hcChP
cGFxdWVKU1dlYWtPYmplY3RNYXAqIG1hcCkKICAgICAgICAgewotICAgICAgICAgICAgZCgpLT53
ZWFrTWFwcy5hZGQobWFwKTsKKyAgICAgICAgICAgIG1fd2Vha01hcHMuYWRkKG1hcCk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIGRlcmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVj
dE1hcCogbWFwKQogICAgICAgICB7Ci0gICAgICAgICAgICBkKCktPndlYWtNYXBzLnJlbW92ZSht
YXApOworICAgICAgICAgICAgbV93ZWFrTWFwcy5yZW1vdmUobWFwKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gZCgpLT53ZWFrUmFuZG9t
LmdldCgpOyB9CisgICAgICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gbV93
ZWFrUmFuZG9tLmdldCgpOyB9CiAgICAgcHJvdGVjdGVkOgogCiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBKU1ZhcmlhYmxlT2JqZWN0OjpBbm9ueW1v
dXNTbG90Q291bnQgKyAxOwpAQCAtMjg5LDggKzI3OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0dsb2JhbE9i
amVjdERhdGEodm9pZCopOwotCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5p
dC4KICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lk
IHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKQEAgLTMxMSwxNyArMjk4LDE3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGlubGluZSB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZWdpc3RlcnMoV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAg
ICBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdpc3RlcnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5
KTsKLSAgICAgICAgZCgpLT5yZWdpc3RlckFycmF5U2l6ZSA9IGNvdW50OworICAgICAgICBtX3Jl
Z2lzdGVyQXJyYXlTaXplID0gY291bnQ7CiAgICAgfQogCiAgICAgaW5saW5lIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiBnbG9iYWxzLCBp
bnQgY291bnQpCiAgICAgewotICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IGQoKS0+cmVnaXN0ZXJB
cnJheVNpemU7CisgICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9yZWdpc3RlckFycmF5U2l6ZTsK
ICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICsgY291bnQ7CiAgICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5
UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbmV3U2l6ZV0pOwotICAgICAgICBpZiAoZCgp
LT5yZWdpc3RlckFycmF5KSB7CisgICAgICAgIGlmIChtX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAg
ICAgICAgIC8vIG1lbWNweSBpcyBzYWZlIGhlcmUgYXMgd2UncmUgY29weWluZyBiYXJyaWVycyB3
ZSBhbHJlYWR5IG93biBmcm9tIHRoZSBleGlzdGluZyBhcnJheQotICAgICAgICAgICAgbWVtY3B5
KHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBjb3VudCwgZCgpLT5yZWdpc3RlckFycmF5LmdldCgpLCBv
bGRTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgICAgICBtZW1jcHkocmVnaXN0ZXJB
cnJheS5nZXQoKSArIGNvdW50LCBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIG9sZFNpemUgKiBzaXpl
b2YoUmVnaXN0ZXIpKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIG5ld1NpemU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiA4MDczNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChKU09iamVjdCk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTTm9uRmlu
YWxPYmplY3QpOwotQVNTRVJUX0NMQVNTX0ZJTExTX0NFTEwoSlNGaW5hbE9iamVjdCk7CitBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTRmluYWxPYmplY3QpOwogCiBjb25zdCBjaGFyKiBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS4iOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAkocmV2aXNpb24gODA3MzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLQogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIAogdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0Ojpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNWYXJpYWJsZU9iamVj
dDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmFwcGVuZCgmZCgpLT5y
ZWdpc3RlclN0b3JlKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3JlZ2lzdGVyU3RvcmUpOwog
fQogCiBKU09iamVjdCogSlNTdGF0aWNTY29wZU9iamVjdDo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKQEAgLTY4LDEyICs2Nyw2IEBAIGJvb2wgSlNTdGF0aWNTY29wZU9iamVj
dDo6aXNEeW5hbWljU2NvcGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTU3RhdGljU2NvcGVP
YmplY3Q6On5KU1N0YXRpY1Njb3BlT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQoZCgpKTsKLSAgICBk
ZWxldGUgZCgpOwotfQotCiBib29sIEpTU3RhdGljU2NvcGVPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gc3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBz
bG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmgJKHJldmlzaW9uIDgwNzM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwy
NSArMzEsMTQgQEAKIG5hbWVzcGFjZSBKU0N7CiAgICAgCiAgICAgY2xhc3MgSlNTdGF0aWNTY29w
ZU9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIHVzaW5nIEpTVmFyaWFibGVPYmplY3Q6OkpTVmFyaWFibGVPYmplY3REYXRhOwotICAgICAg
ICBzdHJ1Y3QgSlNTdGF0aWNTY29wZU9iamVjdERhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVj
dERhdGEgewotICAgICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdERhdGEoKQotICAgICAgICAg
ICAgICAgIDogSlNWYXJpYWJsZU9iamVjdERhdGEoJnN5bWJvbFRhYmxlLCByZWludGVycHJldF9j
YXN0PFJlZ2lzdGVyKj4oJnJlZ2lzdGVyU3RvcmUgKyAxKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFN5bWJvbFRhYmxlIHN5bWJvbFRhYmxlOwotICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IHJlZ2lzdGVyU3RvcmU7Ci0gICAgICAgIH07Ci0gICAg
ICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQotICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKS5zdGF0aWNTY29wZVN0cnVjdHVyZSwgbmV3IEpTU3RhdGljU2NvcGVPYmplY3REYXRhKCkp
CisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnN0YXRp
Y1Njb3BlU3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rl
cio+KCZtX3JlZ2lzdGVyU3RvcmUgKyAxKSkKICAgICAgICAgewotICAgICAgICAgICAgZCgpLT5y
ZWdpc3RlclN0b3JlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICAg
ICAgICAgIG1fcmVnaXN0ZXJTdG9yZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1
ZSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIFN5bWJvbFRh
YmxlRW50cnkoLTEsIGF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIH5K
U1N0YXRpY1Njb3BlT2JqZWN0KCk7CisKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJl
bihNYXJrU3RhY2smKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJl
c0R5bmFtaWNDaGVja3MpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC02NCw3ICs1Myw4IEBAIG5hbWVzcGFjZSBKU0N7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24gfCBPdmVycmlkZXNNYXJr
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU1N0YXRpY1Njb3BlT2Jq
ZWN0RGF0YSogZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RhdGljU2NvcGVPYmplY3REYXRh
Kj4oSlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KKyAgICAgICAgU3ltYm9sVGFibGUgbV9zeW1ib2xU
YWJsZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcmVnaXN0ZXJTdG9yZTsKICAg
ICB9OwogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxl
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1
YmxpYzoKLSAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4g
KmQtPnN5bWJvbFRhYmxlOyB9CisgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNv
bnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHB1
dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVj
a3MpIGNvbnN0ID0gMDsKIAotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHJlZ2lzdGVy
QXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3RlcnNbaW5kZXhdOyB9CisgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgcmVnaXN0ZXJBdChpbnQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0ZXJzW2luZGV4XTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CkBAIC02MywzMCArNjMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICAg
ICAgLy8gU3ViY2xhc3NlcyBvZiBKU1ZhcmlhYmxlT2JqZWN0IGNhbiBzdWJjbGFzcyB0aGlzIHN0
cnVjdCB0byBhZGQgZGF0YQotICAgICAgICAvLyB3aXRob3V0IGluY3JlYXNpbmcgdGhlaXIgb3du
IHNpemUgKHNpbmNlIHRoZXJlJ3MgYSBoYXJkIGxpbWl0IG9uIHRoZQotICAgICAgICAvLyBzaXpl
IG9mIGEgSlNDZWxsKS4KLSAgICAgICAgc3RydWN0IEpTVmFyaWFibGVPYmplY3REYXRhIHsKLSAg
ICAgICAgICAgIEpTVmFyaWFibGVPYmplY3REYXRhKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwg
UmVnaXN0ZXIqIHJlZ2lzdGVycykKLSAgICAgICAgICAgICAgICA6IHN5bWJvbFRhYmxlKHN5bWJv
bFRhYmxlKQotICAgICAgICAgICAgICAgICwgcmVnaXN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8V3Jp
dGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQgZnJvbSAi
ciIgaW4gcmVnaXN0ZXIgZmlsZS4KLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZpbGUuCi0gICAgICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5OyAvLyBJbmRlcGVu
ZGVudCBjb3B5IG9mIHJlZ2lzdGVycywgdXNlZCB3aGVuIGEgdmFyaWFibGUgb2JqZWN0IGNvcGll
cyBpdHMgcmVnaXN0ZXJzIG91dCBvZiB0aGUgcmVnaXN0ZXIgZmlsZS4KLQotICAgICAgICBwcml2
YXRlOgotICAgICAgICAgICAgSlNWYXJpYWJsZU9iamVjdERhdGEoY29uc3QgSlNWYXJpYWJsZU9i
amVjdERhdGEmKTsKLSAgICAgICAgICAgIEpTVmFyaWFibGVPYmplY3REYXRhJiBvcGVyYXRvcj0o
Y29uc3QgSlNWYXJpYWJsZU9iamVjdERhdGEmKTsKLSAgICAgICAgfTsKIAotICAgICAgICBKU1Zh
cmlhYmxlT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1Zh
cmlhYmxlT2JqZWN0RGF0YSogZGF0YSkKKyAgICAgICAgSlNWYXJpYWJsZU9iamVjdChOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBSZWdpc3RlciogcmVnaXN0ZXJzKQogICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0
cnVjdHVyZSkKLSAgICAgICAgICAgICwgZChkYXRhKSAvLyBTdWJjbGFzcyBvd25zIHRoaXMgcG9p
bnRlci4KKyAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKKyAgICAgICAg
ICAgICwgbV9yZWdpc3RlcnMocmVpbnRlcnByZXRfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4q
PihyZWdpc3RlcnMpKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9zeW1ib2xUYWJs
ZSk7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSA9PSBzaXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9zaG91bGRfYmVfc2FtZV9zaXplX2Fz
X1dyaXRlQmFycmllcik7CiAgICAgICAgIH0KIApAQCAtOTksNyArODIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChKU0dsb2JhbERhdGEmLCBjb25zdCBJ
ZGVudGlmaWVyJiwgSlNWYWx1ZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdERhdGEqIGQ7CisgICAg
ICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOyAvLyBNYXBzIG5hbWUgLT4gb2Zmc2V0IGZy
b20gInIiIGluIHJlZ2lzdGVyIGZpbGUuCisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
bV9yZWdpc3RlcnM7IC8vICJyIiBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KKyAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9yZWdpc3RlckFycmF5OyAvLyBJbmRlcGVu
ZGVudCBjb3B5IG9mIHJlZ2lzdGVycywgdXNlZCB3aGVuIGEgdmFyaWFibGUgb2JqZWN0IGNvcGll
cyBpdHMgcmVnaXN0ZXJzIG91dCBvZiB0aGUgcmVnaXN0ZXIgZmlsZS4KICAgICB9OwogCiAgICAg
aW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xNjEsOSArMTQ2LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0Ojpz
ZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJh
eVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5KQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHJlZ2lzdGVyQXJyYXkgIT0gZC0+cmVnaXN0ZXJBcnJheSk7Ci0gICAgICAgIGQt
PnJlZ2lzdGVyQXJyYXkgPSByZWdpc3RlckFycmF5OwotICAgICAgICBkLT5yZWdpc3RlcnMgPSBy
ZWdpc3RlcnM7CisgICAgICAgIEFTU0VSVChyZWdpc3RlckFycmF5ICE9IG1fcmVnaXN0ZXJBcnJh
eSk7CisgICAgICAgIG1fcmVnaXN0ZXJBcnJheSA9IHJlZ2lzdGVyQXJyYXk7CisgICAgICAgIG1f
cmVnaXN0ZXJzID0gcmVnaXN0ZXJzOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCShyZXZp
c2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTAgQEAgTWFya2VkU3BhY2U6Ok1hcmtl
ZFNwYWNlKEpTR2xvYmFsRGF0YSogZwogICAgICwgbV9oaWdoV2F0ZXJNYXJrKDApCiAgICAgLCBt
X2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKIHsKLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHBy
ZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNl
U3RlcCkKKyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQorICAgICAgICBzaXplQ2xh
c3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNpemU7CisKKyAgICBmb3IgKHNpemVfdCBj
ZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2ZmOyBjZWxs
U2l6ZSArPSBpbXByZWNpc2VTdGVwKQogICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLmNl
bGxTaXplID0gY2VsbFNpemU7CiB9CiAKQEAgLTE0OCw3ICsxNTEsMTAgQEAgdm9pZCBNYXJrZWRT
cGFjZTo6cmVzZXQoKQogewogICAgIG1fd2F0ZXJNYXJrID0gMDsKIAotICAgIGZvciAoc2l6ZV90
IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxT
aXplICs9IHByZWNpc2VTdGVwKQorICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0
ZXA7IGNlbGxTaXplIDwgcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApCisg
ICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKworICAgIGZvciAoc2l6ZV90
IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPCBpbXByZWNpc2VDdXRvZmY7IGNl
bGxTaXplICs9IGltcHJlY2lzZVN0ZXApCiAgICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSku
cmVzZXQoKTsKIAogICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDgwNzM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKGNsYXNzKSBDT01QSUxFX0FTU0VSVChzaXplb2YoY2xhc3MpIDw9IE1hcmtlZFNw
YWNlOjptYXhDZWxsU2l6ZSwgY2xhc3NfZml0c19pbl9jZWxsKQotI2RlZmluZSBBU1NFUlRfQ0xB
U1NfRklMTFNfQ0VMTChjbGFzcykgQ09NUElMRV9BU1NFUlQoKHNpemVvZihjbGFzcykgPD0gTWFy
a2VkU3BhY2U6Om1heENlbGxTaXplKSAmJiAhKHNpemVvZihjbGFzcykgJiAoc2l6ZW9mKGNsYXNz
KSAtIDEpKSwgY2xhc3NfZmlsbHNfY2VsbCkKKyNkZWZpbmUgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChjbGFzcykgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKGNsYXNzKSA8IE1hcmtlZFNwYWNlOjpt
YXhDZWxsU2l6ZSwgY2xhc3NfZml0c19pbl9jZWxsKQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NDgsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTWFya2VkU3BhY2UpOwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQ3VycmVudGx5IHB1Ymxp
YyBmb3IgdXNlIGluIGFzc2VydGlvbnMuCi0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
Q2VsbFNpemUgPSAyNTY7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUg
PSAxMDI0OwogCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTQ2VsbCopOwogCkBAIC04MSwx
MCArODAsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaChGdW5jdG9yJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICAv
LyBbIDgsIDE2Li4uIDY0IF0KKyAgICAgICAgLy8gWyA4LCAxNi4uLiAxMjggKQogICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwot
ICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSBtYXhDZWxsU2l6ZTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ291bnQgPSBwcmVjaXNlQ3V0b2Zm
IC8gcHJlY2lzZVN0ZXA7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9m
ZiA9IDEyODsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ291bnQgPSBwcmVj
aXNlQ3V0b2ZmIC8gcHJlY2lzZVN0ZXAgLSAxOworCisgICAgICAgIC8vIFsgMTI4LCAyNTYuLi4g
MTAyNCApCisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IHByZWNp
c2VDdXRvZmY7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0g
bWF4Q2VsbFNpemU7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ291bnQg
PSBpbXByZWNpc2VDdXRvZmYgLyBpbXByZWNpc2VTdGVwIC0gMTsKIAogICAgICAgICB0eXBlZGVm
IEhhc2hTZXQ8TWFya2VkQmxvY2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKIApAQCAtMTA2
LDYgKzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNsZWFyTWFya3MoTWFy
a2VkQmxvY2sqKTsKIAogICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJl
Y2lzZUNvdW50XTsKKyAgICAgICAgU2l6ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1w
cmVjaXNlQ291bnRdOwogICAgICAgICBIYXNoU2V0PE1hcmtlZEJsb2NrKj4gbV9ibG9ja3M7CiAg
ICAgICAgIHNpemVfdCBtX3dhdGVyTWFyazsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFy
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDMtMTAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICBSb2xsZWQgYmFjayBpbiA4
MDI3NyBhbmQgODAyODAgd2l0aCBldmVudCBoYW5kbGVyIGxheW91dCB0ZXN0IGZhaWx1cmVzIGZp
eGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2
NTMgICAgICAgIAorCisgICAgICAgIFRoZSBmYWlsdXJlcyB3ZXJlIGNhdXNlZCBieSBhIGxhc3Qg
bWludXRlIHR5cG86IGFzc2lnbmluZyB0byBjdXJyZW50RXZlbnQKKyAgICAgICAgaW5zdGVhZCBv
ZiBtX2N1cnJlbnRFdmVudC4KKworICAgICAgICAqIEpTUnVuLmNwcDoKKyAgICAgICAgKiBKU1J1
bi5oOgorCiAyMDExLTAzLTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRHbHVlL0pTUnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNS
dW4uY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxMCBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZUNvZGUuaD4KIAogSlNHbHVlR2xvYmFsT2JqZWN0OjpKU0dsdWVHbG9iYWxP
YmplY3QoUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNGbGFncyBmbGFncykKLSAg
ICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgbmV3IERhdGEsIHRoaXMpCisgICAgOiBKU0ds
b2JhbE9iamVjdChzdHJ1Y3R1cmUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV91c2Vy
T2JqZWN0U3RydWN0dXJlKFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkp
CiB7Ci0gICAgZCgpLT5mbGFncyA9IGZsYWdzOwotICAgIGQoKS0+dXNlck9iamVjdFN0cnVjdHVy
ZSA9IFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7Ci19Ci0KLXZvaWQg
SlNHbHVlR2xvYmFsT2JqZWN0OjpkZXN0cm95RGF0YSh2b2lkKiBkYXRhKQotewotICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxEYXRhKj4oZGF0YSk7CiB9CiAKIEpTUnVuOjpKU1J1bihDRlN0cmluZ1Jl
ZiBzb3VyY2UsIEpTRmxhZ3MgaW5GbGFncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9K
U1J1bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCShyZXZp
c2lvbiA4MDczNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwyMyArMzYsMTIgQEAgY2xhc3MgSlNHbHVlR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTR2xvYgogICAgIHB1YmxpYzoKICAgICAgICAgSlNHbHVlR2xvYmFsT2JqZWN0KFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgSlNGbGFncyA9IGtKU0ZsYWdOb25lKTsKIAotICAgICAgICBKU0ZsYWdz
IEZsYWdzKCkgY29uc3QgeyByZXR1cm4gZCgpLT5mbGFnczsgfQotICAgICAgICBTdHJ1Y3R1cmUq
IHVzZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnVzZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNGbGFncyBGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3M7IH0KKyAgICAgICAgU3RydWN0dXJlKiB1c2VyT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBzdHJ1Y3QgRGF0YSA6IEpTR2xvYmFsT2JqZWN0RGF0YSB7Ci0gICAgICAgICAgICBE
YXRhKCkKLSAgICAgICAgICAgICAgICA6IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cm95RGF0YSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gdXNlck9iamVjdFN0cnVjdHVyZTsKLSAgICAgICAgICAgIEpTRmxh
Z3MgZmxhZ3M7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveURhdGEo
dm9pZCopOwotCi0gICAgICAgIERhdGEqIGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
YXRhKj4oSlNHbG9iYWxPYmplY3Q6OmQoKSk7IH0KKyAgICAgICAgSlNGbGFncyBtX2ZsYWdzOwor
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3VzZXJPYmplY3RTdHJ1Y3R1cmU7CiB9OwogCiBj
bGFzcyBKU1J1biA6IHB1YmxpYyBKU0Jhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMS0wMy0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgIFJvbGxlZCBiYWNr
IGluIDgwMjc3IGFuZCA4MDI4MCB3aXRoIGV2ZW50IGhhbmRsZXIgbGF5b3V0IHRlc3QgZmFpbHVy
ZXMgZml4ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTY1MworCisgICAgICAgIFRoZSBmYWlsdXJlcyB3ZXJlIGNhdXNlZCBieSBhIGxhc3QgbWlu
dXRlIHR5cG86IGFzc2lnbmluZyB0byBjdXJyZW50RXZlbnQKKyAgICAgICAgaW5zdGVhZCBvZiBt
X2N1cnJlbnRFdmVudC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6CisKIDIwMTEtMDMt
MTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MDcwMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgwNzM2KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYzNiw3ICsyMjYzNiw2IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0Owog
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJ
Y29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9u
ID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdp
b25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA4MDczNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsOCArNDIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8g
SlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkRPTUdsb2JhbE9iamVjdCIsICZKU0dsb2Jh
bE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLUpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2Jh
bE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0RGF0YSogZGF0YSwgSlNPYmplY3QqIHRoaXNWYWx1
ZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgZGF0YSwgdGhpc1ZhbHVlKQorSlNE
T01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQsIEpTT2Jq
ZWN0KiB0aGlzVmFsdWUpCisgICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIHRoaXNWYWx1
ZSkKKyAgICAsIG1fY3VycmVudEV2ZW50KDApCisgICAgLCBtX3dvcmxkKHdvcmxkKQogewogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CkBAIC02MCwzMyArNjIsMjggQEAgdm9pZCBK
U0RPTUdsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcgogICAgIGZvciAoSlNET01Db25zdHJ1
Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVu
ZDI7ICsraXQyKQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpdDItPnNlY29uZCk7CiAKLSAg
ICBpZiAoZCgpLT5tX2luamVjdGVkU2NyaXB0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZk
KCktPm1faW5qZWN0ZWRTY3JpcHQpOworICAgIGlmIChtX2luamVjdGVkU2NyaXB0KQorICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKIH0KIAotdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBldnQpCit2b2lkIEpTRE9NR2xvYmFs
T2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZlbnQqIGN1cnJlbnRFdmVudCkKIHsKLSAgICBkKCkt
PmV2dCA9IGV2dDsKKyAgICBtX2N1cnJlbnRFdmVudCA9IGN1cnJlbnRFdmVudDsKIH0KIAogRXZl
bnQqIEpTRE9NR2xvYmFsT2JqZWN0OjpjdXJyZW50RXZlbnQoKSBjb25zdAogewotICAgIHJldHVy
biBkKCktPmV2dDsKKyAgICByZXR1cm4gbV9jdXJyZW50RXZlbnQ7CiB9CiAKIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OnNldEluamVjdGVkU2NyaXB0KEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCkK
IHsKLSAgICBkKCktPm1faW5qZWN0ZWRTY3JpcHQuc2V0KGdsb2JhbERhdGEoKSwgdGhpcywgaW5q
ZWN0ZWRTY3JpcHQpOworICAgIG1faW5qZWN0ZWRTY3JpcHQuc2V0KGdsb2JhbERhdGEoKSwgdGhp
cywgaW5qZWN0ZWRTY3JpcHQpOwogfQogCiBKU09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Omlu
amVjdGVkU2NyaXB0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZCgpLT5tX2luamVjdGVkU2NyaXB0
LmdldCgpOwotfQotCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95SlNET01HbG9iYWxP
YmplY3REYXRhKHZvaWQqIGpzRE9NR2xvYmFsT2JqZWN0RGF0YSkKLXsKLSAgICBkZWxldGUgc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3REYXRhKj4oanNET01HbG9iYWxPYmplY3REYXRhKTsK
KyAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdC5nZXQoKTsKIH0KIAogSlNET01HbG9iYWxPYmpl
Y3QqIHRvSlNET01HbG9iYWxPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBKU0M6OkV4ZWNTdGF0
ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gODA3MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RydWN0IEpTRE9N
R2xvYmFsT2JqZWN0RGF0YTsKIAotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChOb25OdWxsUGFz
c1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIEpTRE9NR2xvYmFsT2JqZWN0RGF0YSosIEpTQzo6SlNP
YmplY3QqIHRoaXNWYWx1ZSk7CisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNz
UmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6
OkpTT2JqZWN0KiB0aGlzVmFsdWUpOwogCiAgICAgcHVibGljOgotICAgICAgICBKU0RPTVN0cnVj
dHVyZU1hcCYgc3RydWN0dXJlcygpIHsgcmV0dXJuIGQoKS0+c3RydWN0dXJlczsgfQotICAgICAg
ICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSBjb25zdCB7IHJldHVybiBkKCkt
PmNvbnN0cnVjdG9yczsgfQorICAgICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygp
IHsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQorICAgICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBj
b25zdHJ1Y3RvcnMoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yczsgfQogCiAgICAgICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
ID0gMDsKIApAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihKU0M6Ok1hcmtTdGFjayYpOwogCi0gICAgICAgIERP
TVdyYXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBkKCktPm1fd29ybGQuZ2V0KCk7IH0KKyAg
ICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0K
IAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCkBAIC03NSwz
NyArNzUsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHN0cnVjdCBKU0RPTUdsb2JhbE9iamVjdERhdGEgOiBwdWJsaWMgSlNDOjpK
U0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhIHsKLSAgICAgICAgICAgIEpTRE9NR2xv
YmFsT2JqZWN0RGF0YShET01XcmFwcGVyV29ybGQqIHdvcmxkLCBEZXN0cnVjdG9yIGRlc3RydWN0
b3IgPSBkZXN0cm95SlNET01HbG9iYWxPYmplY3REYXRhKQotICAgICAgICAgICAgICAgIDogSlNH
bG9iYWxPYmplY3REYXRhKGRlc3RydWN0b3IpCi0gICAgICAgICAgICAgICAgLCBldnQoMCkKLSAg
ICAgICAgICAgICAgICAsIG1fd29ybGQod29ybGQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIEpTRE9NU3RydWN0dXJlTWFwIHN0cnVjdHVyZXM7Ci0gICAgICAg
ICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwIGNvbnN0cnVjdG9yczsKLQotICAgICAgICAgICAgRXZl
bnQqIGV2dDsKLSAgICAgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7Ci0g
ICAgICAgICAgICBKU0M6OldyaXRlQmFycmllcjxKU09iamVjdD4gbV9pbmplY3RlZFNjcmlwdDsK
LSAgICAgICAgfTsKKyAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOworICAg
ICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3JzOwogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUpTRE9NR2xvYmFsT2JqZWN0RGF0YSh2b2lkKik7
Ci0KLSAgICAgICAgSlNET01HbG9iYWxPYmplY3REYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3REYXRhKj4oSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpk
KTsgfQorICAgICAgICBFdmVudCogbV9jdXJyZW50RXZlbnQ7CisgICAgICAgIFJlZlB0cjxET01X
cmFwcGVyV29ybGQ+IG1fd29ybGQ7CisgICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0
PiBtX2luamVjdGVkU2NyaXB0OwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1
Y3RvckNsYXNzPgogICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICB7Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGdsb2Jh
bE9iamVjdC0+Y29uc3RydWN0b3JzKCkuZ2V0KCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pLmdl
dCgpKQorICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBjb25zdF9jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuZ2V0KCZD
b25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOwogICAgICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
Q29uc3RydWN0b3JDbGFzcyhleGVjLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgIEFTU0VSVCghZ2xvYmFsT2JqZWN0LT5jb25zdHJ1Y3RvcnMo
KS5jb250YWlucygmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKSk7CisgICAgICAgIEFTU0VSVCgh
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9y
cygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5j
b25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCkuZmlyc3Qt
PnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9y
KTsKKyAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkt
PmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJz
dC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0
b3IpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDgw
NzM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMjEgKzQ1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpT
RE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotSlNET01XaW5kb3dCYXNlOjpKU0RP
TVdpbmRvd0Jhc2VEYXRhOjpKU0RPTVdpbmRvd0Jhc2VEYXRhKFBhc3NSZWZQdHI8RE9NV2luZG93
PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQotICAgIDogSlNET01HbG9iYWxPYmpl
Y3REYXRhKHNoZWxsLT53b3JsZCgpLCBkZXN0cm95SlNET01XaW5kb3dCYXNlRGF0YSkKLSAgICAs
IGltcGwod2luZG93KQotICAgICwgc2hlbGwoc2hlbGwpCi17Ci19Ci0KIEpTRE9NV2luZG93QmFz
ZTo6SlNET01XaW5kb3dCYXNlKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkK
LSAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgbmV3IEpTRE9NV2luZG93QmFzZURh
dGEod2luZG93LCBzaGVsbCksIHNoZWxsKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qoc3RydWN0
dXJlLCBzaGVsbC0+d29ybGQoKSwgc2hlbGwpCisgICAgLCBtX2ltcGwod2luZG93KQorICAgICwg
bV9zaGVsbChzaGVsbCkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCiAgICAg
R2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZG9jdW1lbnQiKSwganNOdWxsKCks
IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVu
dGlmaWVyKGdsb2JhbEV4ZWMoKSwgIndpbmRvdyIpLCBkKCktPnNoZWxsLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGdsb2JhbEV4
ZWMoKSwgIndpbmRvdyIpLCBtX3NoZWxsLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsK
ICAgICAKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5H
VEgoc3RhdGljR2xvYmFscykpOwpAQCAtNjcsMTkgKzYyLDE5IEBAIEpTRE9NV2luZG93QmFzZTo6
SlNET01XaW5kb3dCYXNlKE5vbk51bGwKIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURv
Y3VtZW50KCkKIHsKLSAgICBBU1NFUlQoZCgpLT5pbXBsLT5kb2N1bWVudCgpKTsKKyAgICBBU1NF
UlQobV9pbXBsLT5kb2N1bWVudCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxFeGVj
KCk7Ci0gICAgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgImRvY3VtZW50IiksIHRvSlMoZXhlYywgdGhpcywgZCgpLT5pbXBs
LT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiZG9j
dW1lbnQiKSwgdG9KUyhleGVjLCB0aGlzLCBtX2ltcGwtPmRvY3VtZW50KCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jh
c2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBkKCktPmlt
cGwtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1faW1wbC0+ZG9jdW1lbnQoKTsKIH0KIAogU3Ry
aW5nIEpTRE9NV2luZG93QmFzZTo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBkKCktPnNoZWxsLT53
aW5kb3coKS0+aW1wbCgpLT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhc0pTRE9NV2lu
ZG93KG90aGVyKS0+aW1wbCgpKTsKKyAgICByZXR1cm4gbV9zaGVsbC0+d2luZG93KCktPmltcGwo
KS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYXNKU0RPTVdpbmRvdyhvdGhlciktPmlt
cGwoKSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CkBAIC0xNzAsNyArMTY1LDcgQEAgSlNWYWx1ZSBKU0RP
TVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iagogCiBKU0RPTVdpbmRvd1NoZWxsKiBKU0RPTVdp
bmRvd0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZCgpLT5zaGVsbDsKKyAgICBy
ZXR1cm4gbV9zaGVsbDsKIH0KIAogSlNHbG9iYWxEYXRhKiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpCkBAIC0xOTAsMTEgKzE4NSw2IEBAIEpTR2xvYmFsRGF0YSogSlNET01X
aW5kb3dCYXNlOjpjb21tb25KU0cKICAgICByZXR1cm4gZ2xvYmFsRGF0YTsKIH0KIAotdm9pZCBK
U0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3lKU0RPTVdpbmRvd0Jhc2VEYXRhKHZvaWQqIGpzRE9NV2lu
ZG93QmFzZURhdGEpCi17Ci0gICAgZGVsZXRlIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZURh
dGEqPihqc0RPTVdpbmRvd0Jhc2VEYXRhKTsKLX0KLQogLy8gSlNET01HbG9iYWxPYmplY3QqIGlz
IGlnbm9yZWQsIGFjY2Vzc2luZyBhIHdpbmRvdyBpbiBhbnkgY29udGV4dCB3aWxsCiAvLyB1c2Ug
dGhhdCBET01XaW5kb3cncyBwcm90b3R5cGUgY2hhaW4uCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIERPTVdpbmRvdyogZG9tV2luZG93KQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9u
IDgwNzM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCi0gICAgICAgIERPTVdp
bmRvdyogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+aW1wbC5nZXQoKTsgfQorICAgICAgICBE
T01XaW5kb3cqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICAgICAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gQ2FsbGVkIGp1c3QgYmVmb3JlIHJlbW92aW5nIHRoaXMgd2lu
ZG93IGZyb20gdGhlIEpTRE9NV2luZG93U2hlbGwuCkBAIC04MiwxOSArODIsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgSlNDOjpKU0dsb2JhbERhdGEqIGNvbW1vbkpT
R2xvYmFsRGF0YSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RydWN0IEpTRE9NV2luZG93
QmFzZURhdGEgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3REYXRhIHsKLSAgICAgICAgICAgIEpT
RE9NV2luZG93QmFzZURhdGEoUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5k
b3dTaGVsbCogc2hlbGwpOwotCi0gICAgICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBpbXBsOwot
ICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGw7Ci0gICAgICAgIH07CisgICAgICAg
IFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogbV9z
aGVsbDsKIAogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAgICAgU3RyaW5nIGNyb3NzRG9tYWluQWNjZXNz
RXJyb3JNZXNzYWdlKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0RPTVdpbmRvd0Jhc2VEYXRhKHZvaWQqKTsK
LQotICAgICAgICBKU0RPTVdpbmRvd0Jhc2VEYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8SlNET01XaW5kb3dCYXNlRGF0YSo+KEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0K
ICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpTRE9NV2luZG93IG9yIGpzTnVsbCgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgJKHJl
dmlzaW9uIDgwNzM2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBpbmxpbmUgYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OmFsbG93c0FjY2VzCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3dC
YXNlOjphbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShjb25zdCBKU0dsb2JhbE9iamVjdCogb3RoZXIp
IGNvbnN0CiB7CiAgICAgY29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01X
aW5kb3cob3RoZXIpOwotICAgIGNvbnN0IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBkKCkt
PnNoZWxsLT53aW5kb3coKTsKKyAgICBjb25zdCBKU0RPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0g
bV9zaGVsbC0+d2luZG93KCk7CiAKICAgICBpZiAob3JpZ2luV2luZG93ID09IHRhcmdldFdpbmRv
dykKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gODA3MzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTV29y
a2VyQ29udGV4CiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJDb250ZXh0QmFzZTo6c19pbmZvID0g
eyAiV29ya2VyQ29udGV4dCIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAK
IEpTV29ya2VyQ29udGV4dEJhc2U6OkpTV29ya2VyQ29udGV4dEJhc2UoTm9uTnVsbFBhc3NSZWZQ
dHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBp
bXBsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qoc3RydWN0dXJlLCBuZXcgSlNET01HbG9iYWxP
YmplY3REYXRhKG5vcm1hbFdvcmxkKCppbXBsLT5zY3JpcHQoKS0+Z2xvYmFsRGF0YSgpKSksIHRo
aXMpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKCppbXBs
LT5zY3JpcHQoKS0+Z2xvYmFsRGF0YSgpKSwgdGhpcykKICAgICAsIG1faW1wbChpbXBsKQogewog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cg==
</data>
<flag name="review"
          id="77467"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>